perm filename SCOLB.F4[MUS,LCS]5 blob
sn#102047 filedate 1974-05-11 generic text, type T, neo UTF8
00100 C THIS PROGRAM IS THE PROPERTY OF LELAND SMITH, PROFESSOR OF MUSIC
00200 C AT STANFORD UNIVERSITY. IT MAY NOT BE COPIED OR ALTERED IN ANY
00300 C WAY WITHOUT WRITTEN PERMISSION OF THE AUTHOR.
00400
00500
00600 C 6/10/72 ********** SCORE ********** LELAND SMITH, SEP.1969
00700
00800 C THIS PROGRAM WRITES NOTE LISTS FOR THE PDP10 SOUND
00900 C GENERATION PROGRAM.
01000 C IF # OF INSTS IS CHANGED, ALSO CHANGE # IN 'INFO' FORMAT.
01100 C LOAD 'SCORE' WITH BRZ.REL (RAN. NUM GENERATOR),SPRINT.MAC AND,
01200 C SCANX, (AND QUAD AND QUADO WHEN THEY ARE READY) AND
01300 C IF DESIRED, A SUBROUTINE WITH THE FOLLOWING HEADING:
01400 C SUBROUTINE SUBR
01500 C COMMON /INS/ INST(27),BG(60)
01600 C COMMON P(30),INUM,IPAR,CNT(27),BT,PL(48),IREST,DF
01700 C INUM=INST# IPAR=PARAM#
01800 C BT=BASIC TIME P1 WHEN SUBROUTINE IS CALLED
01900 C IF IREST IS <0, THAT NOTE WILL BE A REST.
02000 C INST=INST. NAME, BG=INSTS' BEGIN TIMES.
02100 C NOTE #S IN SUBROUTINE: (1-84) C4=37 FS4=43 C5=49 ETC.
02200 C F1=86 F15=100 (NO F16!)
02300
02400 COMMON /Q/ BNW(100),NWZ
02500 COMMON /INS/INST,BG
02600 DIMENSION ROFF(27),V(2000),NP(27),PCH(27,32),INST(27)
02700 1 ,RDEV(27),IPT(27,31),XT(27),BG(60),OTH(20,16),SCAL(101)
02800 1 ,IV(2000),NCNT(27,32),P1(27),IT(30),JFM(4)
02900 1 ,IOUT(70),IFM(80),COPY(30),LIST(78),JPT(837)
03000 1 ,FINM(6),TINST(5),TPALN(4),ENFI(5),TEDIT(4),INVIS(27)
03100 C WITH VX,IOUT AT 70 AND IFM AT 80 OK FOR ONLY
03200 C 40 LIT CHARS + 30 PARAMS PER INST.
03300 C 60 BG TIMES AVAILABLE. FOR INSTS AND INSERTS AND EDITS.
03400 COMMON P(30),J,L,CNT(27),BT,PL(48),MK,DF,DUR(27)
03500 1 ,IQ(27),KL,X,ZPAR,KA,LK,NNUM,JJ,JA,ISUB,NFLG,IXX,ISEMI,IQT
03600 1 ,INP(72),VX(70),ISCA(12),IDAT(11),IAMP,K,KN,M,ML,CODE,IBLA
03700 EQUIVALENCE (PP1,P(1)),(P(2),P2),(P(3),P3),(P(4),P4),
03800 1 (VX1,VX(1)),(INP1,INP(1)),(PL4,PL(4)),(IPP,ISCA(2))
03900 1 ,(IEN,ISCA(4)),(IPT,JPT),(ISS,ISCA(9)),(ITT,ISCA(11))
04000 1 ,(IE,ISCA(5)),(ID,ISCA(3)),(IF,ISCA(6)),(IAA,ISCA(10))
04100 1 ,(VX2,VX(2)),(VX3,VX(3)),(NCNT,PCH),(VX4,VX(4))
04200 1 ,(VX5,VX(5)),(IDOT,IDAT(11)),(VX,IOUT),(IFM3,IFM(3))
04300 1 ,(IT,INP(27)),(V,IV),(PLAY,ISCA(7)),(IFM2,IFM(2))
04400 1 ,(IFM4,IFM(4)),(IFM(3),LIST)
04500 DATA KZY/27/,ISEMI/';'/,RTF/.05/,IQT/'"'/
04600 1, JFM(3)/','/
04700 C IAA=A ID=D IE=E IF=F IEN=N IPP=P ISS=S ITT=T
04800 DATA KSLA/'/'/,IBLA/' '/,BLA/' '/,IXX/'X'/,ITMPO/'TEMPO'/
04900 1 ,ISCA/'C','P','D','N','E','F','PLAY;','G','S','A','T','B'/
05000 1 ,IDAT/'0','1','2','3','4','5','6','7','8','9','.'/
05100 1 ,SCAL/'C/8','CS/8','D/8','DS/8','E/8','F/8','FS/8','G/8',
05200 1 'GS/8','A/8','AS/8','B/8','C/4','CS/4','D/4','DS/4','E/4',
05300 1 'F/4','FS/4','G/4','GS/4','A/4','AS/4','B/4','C/2','CS/2',
05400 1 'D/2','DS/2','E/2','F/2','FS/2','G/2','GS/2','A/2','AS/2',
05500 1 'B/2','C','CS','D','DS','E','F','FS','G','GS','A','AS',
05600 1 'B','C*2','CS*2','D*2','DS*2','E*2','F*2','FS*2','G*2',
05700 1 'GS*2','A*2','AS*2','B*2','C*4','CS*4','D*4','DS*4','E*4',
05800 1 'F*4','FS*4','G*4','GS*4','A*4','AS*4','B*4','C*8','CS*8',
05900 1 'D*8','DS*8','E*8','F*8','FS*8','G*8','GS*8','A*8','AS*8',
06000 1 'B*8','R','F1','F2','F3','F4','F5','F6','F7','F8','F9',
06100 1 'F10','F11','F12','F13','F14','F15','END'/,I1X/'1X'/
06200 1 ,IFM(1)/'('/,IFM2/'1XA5,'/,IFCOM/5H', ',/,IA1/'A1,'/
06300 LPAR=0
06400 IPRN=0
06500 QX=0.
06600 MOT=0
06700 RETRO=-1.
06800 INVRT=-1
06900 LCNT=1
07000 PARENS=0
07100 JZ=1
07200 CALL RNDINT
07300 PR=0
07400 IAMP=0
07500 C IAMP IS 'BLANK LINE'FLAG ON PP1-3.
07600 T5=0
07700 NINS=0
07800 K=0
07900 IDALL=-1
08000 QTS=-1.
08100 KB=0
08200 NWZ=1
08300 BNW(1)=0
08400 I=1
08500 KL=0
08600 TP=0
08700 KN=IBLA
08800 RA=0
08900 CHN=0
09000 DO 127 K=1,77,3
09100 127 LIST(K)=0
09200 C INITIALIZES MOTIVIC LIST FOR ERROR FINDING ROUTINE.
09300 NWX=0
09400 BY=-1
09500 DO 1128 K=1,KZY
09600 INVIS(K)=0
09700 INST(K)=0
09800 CNT(K)=0
09900 RDEV(K)=0
10000 C RDEV IS FOR RAND DEVIATIONS AT RUN TIME
10100 NP(K)=0
10200 IQ(K)=0
10300 C IQ IS FOR RESTART FLAG
10400 IPT(K,1)=0
10500 DO 1128 L=1,32
10600 1128 PCH(K,L)=0
10700
10800 ITYP=-1
10900 C TYPE 'FILE NAME', TEMPO FACTOR(0=1), AMPL.FACT(0=1),
11000 C SECONDS TO BE OMITTED, DUR AT CUTOFF.
11100 JED=-1
11200 2112 TYPE 8002
11300 1112 ACCEPT 77732,INP
11400 JFM(4)='5F)'
11500 JFM(1)=' (A'
11600 C FOR FREE 'A' FORMAT
11700 CALL FMT(JFM,INP,MLX)
11800 REREAD JFM,K,TF,AMPFAC,OP1,DURX
11900 C JFM IS THE CURRENT FORMAT STATEMENT
12000 IF(K.NE.'EDIT')GO TO 3112
12100 JED=0
12200 GO TO 2112
12300 C 'E(DIT)' GOES TO EDIT MODE
12400 3112 IF(TF.EQ.0)TF=1.
12500 IF(AMPFAC.EQ.0)AMPFAC=1.
12600 CC**FROM 11700 CHANGED 3/73 IF(TF.NE.999.)GO TO 21122
12700 21122 IF(K.NE.'TYPE')GO TO 128
12800 ITYP=0
12900 DATA FINM/30H(' TYPE OUTPUT FILE NAME'/) /
13000 TYPE FINM
13100 C TO USE TYPE-IN MODE. FILE OF INPUT IS WRITTEN ON FOR21.DAT
13200 ACCEPT 1127,ISLAC
13300 IF(ISLAC.EQ.IBLA)STOP
13400 REWIND 21
13500 CC WRITE (21,11122) ISLAC
13600 WRITE (21,1127) ISLAC
13700 GO TO 3127
13800 11122 FORMAT(1XA5,72A1)
13900 128 IF(K.NE.'INFO')GO TO 3128
14000 TYPE 8002
14100 TYPE 1113
14200 TYPE 118
14300 TYPE 1114
14400 TYPE 8002
14500 GO TO 1112
14600 118 FORMAT(' TO DSK=1, TTY=2, BOTH=0, LPT=22, PROOF=3, DEBUG=4'/)
14700 8002 FORMAT(' TYPE FILE NAME'/)
14800 8001 FORMAT(A5,5F)
14900 107 FORMAT(I,A5,5F)
15000 1113 FORMAT(' NAME, TF, AMPFAC, OMIT", DUR".'/)
15100 1114 FORMAT(' N1, N2=RAN NUM, N3=0 LISTS INPUT, N4=SINGLE INST.'/
15200 1 ' IF -- N1=3 DURS ONLY, =4 V ARRAY'/
15300 1 3X' 27 INSTRUMENTS ARE AVAILABLE'/)
15400 1127 FORMAT(A5,72A1)
15500 3128 IF(K.NE.IBLA)IFLNM=K
15600 CALL IFILE(1,IFLNM)
15700 READ(1,107)LN,ISLAC
15800 REREAD 77732,INP
15900 C FOR LATER USE
16000 IF(LN.NE.0)GO TO 3127
16100 C JUMP IF THE FILE HAS LINE NUMBERS.
16200 REREAD 1127,ISLAC
16300 C REREADS FIRST LINE
16400 CC IF(ISLAC.NE.'COMME')GO TO 3127
16500 CC DO 31271 K=1,72
16600 CC READ(1,77732),KL,KL
16700 CC31271 IF(KL.EQ.ISEMI)GO TO 3127
16800 C TO SKIP OVER 'COMMENT' SECTION OF TVED FILES.
16900
17000 3127 TYPE 118
17100 IF(DURX.EQ.0)DURX=19999.
17200 IXIN=1
17300 CC -- NOW AT TOP OF PAGE 4(2/74) DO 1107 K=1,30
17400 CC1107 PL(K)=1.
17500 INONLY=-1
17600 ACCEPT 300,MX,X,Y,Z
17700 IF(Z.NE.0)INONLY=Z
17800 IF(X.NE.0)IXIN=X
17900 C MX=3 GIVES DURS ONLY
18000 C TO SUPPRESS LIST OF INPUT DATA, TYPE ANY 3RD NUM. (BUT 9.)
18100 C (1 1 1 =RECORD,RAN. NUM=1,SUPPRESS INPUT.)
18200 MZ=0
18300 JOUT=5
18400 C 5=OUTPUT TO TTY
18500 SOS=-1.
18600 IF(Y.NE.0)SOS=0
18700 C IF 3RD NUM≠0, EDIT FILE WILL PRINT AS IT IS READ.
18800 IF(MX.NE.22)GO TO 2107
18900 JOUT=22
19000 REWIND 22
19100 2107 IF(MX.LE.1)MX=MX-2
19200 IF(MX.EQ.-2.OR.MX.EQ.2.OR.MX.EQ.22)MZ=-1
19300 IF(MX.EQ.4)MZ=-4
19400 IF(SOS.AND.ITYP)WRITE(JOUT,87732)INP
19500 CC IF(ITYP.EQ.0)GO TO 2308
19600 CC WRITE(JOUT,77732)INP
19700
19800 C *************** READS INPUT ***********************
19900 2308 IF(ITYP)GO TO 2127
20000 DATA TINST /25H(' TYPE INST NAME, ETC'/)/
20100 1,TEDIT/20H(' RETYPE LINE?'/ )/
20200 23081 TYPE TINST
20300 ACCEPT 77732,INP
20400 IF(JED)WRITE(21,77732)INP
20500 JFM(4)='72A1)'
20600 C PUTS ON LPT AND TTY
20700 CC JFM(1)=' (A'
20800 CC CALL FMT(JFM,INP,MLX)
20900 CC REREAD JFM,J,INP
21000 CC WRITE(21,11122) J,INP
21100 GO TO 1074
21200 2127 JREAD=1
21300 4400 READ(1,77732,END=2337)INP
21400 IF(SOS)WRITE(JOUT,87732)INP
21500 GO TO(441,442,443,444,445,446)JREAD
21600
21700 441 JFM(4)='72A1)'
21800 IF(LN.EQ.0)GO TO 1074
21900 REREAD 2114,LN,INP
22000 JFM(1)=' (I,A'
22100 CALL FMT(JFM,INP,MLX)
22200 REREAD JFM,LN,J,INP
22300 GO TO 4127
22400 1074 JFM(1)=' (A'
22500 CALL FMT(JFM,INP,MLX)
22600 REREAD JFM,J,INP
22700 CC IF(LN.EQ.0)READ(1,1127,END=2337)J,INP
22800 4127 IF(JED.OR.K.EQ.'Y')GO TO 41271
22900 C K CHECK IS TO PASS AFTER RETYPING
23000 TYPE TEDIT
23100 ACCEPT 77732,K
23200 IF(K.EQ.'Y')GO TO 23081
23300 IF(K.EQ.'G')JED=-1
23400
23500
23600 41271 IF(J.EQ.IBLA)GO TO 2308
23700 MLX=1
23800 IZ=0
23900 JA=-1
24000 ISUB=4
24100 ALL=1.
24200 VX1=0
24300 VX2=0
24400 VX3=0
24500 LK=-1
24600 K=0
24700 IF(V(I-1).NE.-9900.-BY)GO TO 364
24800 BY=-1.
24900 I=I-1
25000 364 DO 361 JD=1,72
25100 N=INP(JD)
25200 IF(N.NE.'R')GO TO 361
25300 C LOOKS FOR 'RESTART'
25400 DO 3611 M=JD,72
25500 KL=INP(M)
25600 IF(KL.EQ.IBLA.OR.KL.EQ.ISEMI.OR.KL.EQ.KSLA.OR.KL.EQ.',')GO TO 3631
25700 CC IF(INP(M).EQ.IBLA)GO TO 3631
25800 3611 INP(M)=IBLA
25900 C CHANGES 'RESTART' TO BLANKS
26000 3631 DO 363 N=1,NINS
26100 IF(J.NE.INST(N))GO TO 363
26200 IQ(N)=-1
26300 C SETS RESTART FLAG. THIS INST WILL NOW APPEAR WITH NEW NUM.
26400 GO TO 362
26500 363 CONTINUE
26600 361 IF(N.EQ.KSLA.OR.N.EQ.ISEMI)GO TO 6773
26700 6773 K=K+1
26800 IF(K.GT.NINS)GO TO 36
26900 IF(INST(K).NE.J.OR.IQ(K).EQ.-1)GO TO 6773
27000 C FINDS CORRECT INST NUM. PASSES RESTARTED INSTS.
27300 LK=K
27400 GO TO 1773
27500 36 IF(J.EQ.'RUN;'.OR.J.EQ.'RUN')GO TO 2337
27600 IF(J.EQ.'INSER'.OR.J.EQ.'EDIT')ISUB=6
27700 IF(J.EQ.ITMPO.OR.J.EQ.'CONDU'.OR.J.EQ.'PLAY'.OR.ISUB.GT.4)
27800 1GO TO 1773
27900 IF(J.EQ.'SECTI')GO TO 1081
28000 C****************** ABOVE AND BELOW FOR 'SECTIONS'
28100 IF(J.EQ.'END'.OR.J.EQ.'END S'.OR.J.EQ.'FINIS')GO TO 1082
28200 362 LK=NINS+1
28300 IF(LK.GT.KZY)GO TO 99
28400 INST(LK)=J
28500 IZ=LK
28600 GO TO 1773
28700
28800 C*********** DOWN TO 99 FOR 'SECTIONS'
28900 1083 V(I)=-99.
29000 KL=1
29100 GO TO 3083
29200 C READS 'PLAY SECT. N1,N2'
29300 1081 V(I)=-199.
29400 KL=4
29500 3083 DO 2081 K=KL,72
29600 IF(INP(K).EQ.IBLA)GO TO 2081
29700 IV(I+1)=INP(K)
29800 I=I+2
29900 3081 BY=-1.
30000 GO TO 2308
30100 2081 CONTINUE
30200 C READS SECTION IDENTIFIER, -199. MARKS BEGINNING
30300 C1082 IF(V(I-1).EQ.-9900.-BY)I=I-1
30400 C********* FEB 15,71
30500 1082 V(I)=-299.
30600 I=I+1
30700 GO TO 3081
30800 C MARKS END OF SECTION
30900 C************************
31000
31100 99 TYPE 199,LN
31200 STOP
31300 199 FORMAT(' ERROR!! LAST LINE READ =',I6/)
31400 4 IF(LK.LE.NINS)GO TO 8773
31500 IF(ALL.GT.0)GO TO 1004
31600 IF(IDALL.GT.0)GO TO 8773
31700 BG(LK)=VX1
31800 IDALL=LK
31900 GO TO 2004
32000 C 'MOVE' CHANGES IN 'ALINS' CAN'T BE RESET IN INDIV. INSTS.
32100 1004 BG(LK)=VX1
32200 IF(LK.EQ.IZ)VX1=0
32300 C MAY 3,71 **** ALL PARAMS WILL BE SET UP AT TIME 0.
32400 C CHECK EFFECT ON 'MOVE'!
32500 C ******** APR.23, 1971 FIXES BG TIMES IN 'MOVE'?????!!!!!!!
32600 2004 NINS=LK
32700 IF(VX3.NE.0)VX2=10000.+VX3
32800 IF(VX2.EQ.0)VX2=-1
32900 DUR(LK)=VX2
33000 GO TO 900
33100 C******** ABOVE FOR REST ONLY ENTRIES. FEB 18,71
33200 8773 IF(VX2.NE.0)VX1=VX1*10000.+VX2
33300 900 IF(VX1.EQ.BY.AND.J.NE.'PLAY')GO TO 5773
33400 C*********** 'PLAY' IS FOR 'SECTIONS'
33500 BY=VX1
33600 C BY=CURRENT BG TIME.
33700 C********* FEB 15,71
33800 V(I)=-9900.-BY
33900 I=I+1
34000 IF(NWZ.NE.0)CALL BGSORT(BY)
34100 5773 IF(J.EQ.'TEMPO')GO TO 1106
34200 IF(J.EQ.'CONDU')GO TO 3018
34300 IF(J.EQ.'PLAY')GO TO 1083
34400 C*********** ABOVE FOR 'SECTIONS'
34500 4773 NW=LPAR
34600 IF(I.GT.1900.)TYPE 107,I
34700 ALL=1.
34800 DF=0
34900 ISUB=1
35000 1299 IF(JZ.NE.0)GO TO 1773
35100
35200
35300 7773 IF(ITYP)GO TO 77731
35400 DATA TPALN /20H(' TYPE A LINE'/) /
35500 77734 TYPE TPALN
35600 ACCEPT 77732,INP
35700 IF(JED)WRITE(21,77732) INP
35800 IF(INP1.EQ.IBLA)GO TO 77734
35900 GO TO 77733
36000 77732 FORMAT(72A1)
36100 87732 FORMAT(1X72A1)
36200 77731 JREAD=2
36300 GO TO 4400
36400 442 IF(LN.NE.0)REREAD 2114,LN,INP
36500 IF(INP1.EQ.IBLA)GO TO 77731
36600 IF(JED)GO TO 77733
36700 TYPE TEDIT
36800 ACCEPT 77732,K
36900 IF(K.EQ.'Y')GO TO 77734
37000 IF(K.EQ.'G')JED=-1
37100 C DOESN'T WORK FOR EDITS AND INSERTS YET???
37200 CC IF(SOS)WRITE(JOUT,2114),LN,INP
37300
37400
37500 77733 MLX=1
37600 C 'LISTS' MUST END WITH *
37700 CC1773 JZ=0
37800 1773 IF(IPRN.EQ.0)GO TO 17732
37900 L=I-1
38000 IF(QTS.AND.V(I-1).EQ.999.)L=L-1
38100 IPRN=IPRN-1
38200 IF(PARENS.EQ.0)GO TO 17733
38300 PARENS=0
38400 LIST(LCNT+2)=L
38500 LCNT=LCNT+3
38600 IF(IPRN.EQ.0)GO TO 17732
38700 IPRN=0
38800 17733 LIST(MOT)=L
38900 MOT=0
39000 C FOR ERROR TRAP
39100
39200 17732 JZ=0
39300 N=0
39400 17731 ML=MLX
39500
39600 C BIG LOOP -- TO END OF PAGE 1.
39700 JD=ML
39800 975 N=INP(JD)
39900 IF(N.EQ.IBLA.OR.N.EQ.',')GO TO 236
40000 C ((((())))) MAY 13,71 /Z (D4/E/X 2 3)/ CS/ ETC. CAN USE 26 LABELS.
40100 33611 IF(N.NE.'('.AND.N.NE.')')GO TO 2361
40200 INP(JD)=IBLA
40300 L=JD-1
40400 5113 IF(INP(L).NE.IBLA)GO TO 2113
40500 L=L-1
40600 GO TO 5113
40700 2113 IF(N.EQ.')')GO TO 3361
40800 IF(PARENS.EQ.0)GO TO 1140
40900 LCNT=LCNT+3
41000 IF(MOT.NE.0)GO TO 11403
41100 MOT=LCNT-1
41200 1140 DO 11401 JC=1,LCNT-1,3
41300 IF(INP(L).NE.LIST(JC))GO TO 11401
41400 C FINDS DUPLICATE IDENTIFIER
41500 TYPE 11402,INP(L)
41600 GO TO 99
41700 11403 TYPE 11404
41800 GO TO 99
41900 11404 FORMAT(' MORE THAN 2 PARENS OPEN'/)
42000
42100 11402 FORMAT(' MOTIVIC (',A1,') USED TWICE')
42200 11401 CONTINUE
42300 LIST(LCNT)=INP(L)
42400 PARENS=-1.
42500 INP(L)=IBLA
42600 LIST(LCNT+1)=I
42700 GO TO 236
42800 CC33612 IF(QTS)GO TO 236
42900 CC GO TO 6721
43000 C ''''''' FOR SINGLE QUOTES
43100 3361 IPRN=IPRN+1
43200 CC IF(QTS)GO TO 236
43300 CC GO TO 7231
43400 GO TO 236
43500 C JUMPS BACK INTO QUOTE SECTION
43600 CQ IF(PARENS.EQ.0)GO TO 2140
43700 CQ LIST(LCNT+2)=L
43800 CQ LCNT=LCNT+3
43900 CQ PARENS=0
44000 CQ GO TO 33612
44100 CQ2140 LIST(MOT)=L
44200 CQ GO TO 33612
44300 CQC ))))))))))) LAST ) CAN'T APPEAR AT END OF LINE!!
44400 C @@@@@@@@@@@@ /@Z/DS3/ ETC.
44500 2361 IF(N.NE.'@')GO TO 5361
44600 DO 113 L=1,72
44700 K=JD+L
44800 C K IS USED AT 240!!!
44900 JG=INP(K)
45000 IF(JG.NE.'-')GO TO 6113
45100 RETRO=0
45200 INP(K)=IBLA
45300 GO TO 113
45400 6113 IF(JG.NE.'$')GO TO 7113
45500 C '$' IS FOR INVERSIONS IN 'NOTES'
45600 INVRT=0
45700 GO TO 113
45800 7113 IF(JG.NE.IBLA)GO TO 4113
45900 113 CONTINUE
46000 4113 DO 6361 L=1,LCNT,3
46100 IF(JG.NE.LIST(L))GO TO 6361
46200 VX1=0
46300 DO 40 M=JD+2,72
46400 JG=INP(M)
46500 IF(JG.EQ.IBLA)GO TO 40
46600 IF(JG.EQ.KSLA.OR.JG.EQ.ISEMI.OR.JG.EQ.'*')GO TO 140
46700 ML=M
46800 GO TO 240
46900 40 CONTINUE
47000 240 JC=JA
47100 JA=-1
47200 INP(K)=IBLA
47300 CALL SCANR
47400 JA=JC
47500 140 JC=1
47600 KN=LIST(L+1)
47700 M=LIST(L+2)+1
47800 IF(RETRO)GO TO 640
47900 JC=M-1
48000 M=KN-1
48100 KN=JC
48200 JC=-1
48300 RETRO=-1.
48400 640 IF(INVRT)GO TO 940
48500 840 X=V(KN)
48600 V(I)=X+VX1
48700 C FINDS CENTER FOR INVERSION (+TRANSP.)
48800 I=I+1
48900 KN=KN+JC
49000 IF(V(KN-JC).NE.85.)GO TO 940
49100 V(I-1)=85.
49200 GO TO 840
49300
49400 940 Z=V(KN)
49500 IF(INVRT.EQ.0)GO TO 440
49600 IF(VX1.EQ.0)GO TO 540
49700 C " @Q N " WHERE N= 1/2 STEPS IN 'NOTES' OR MULT FACTOR IN OTHERS.
49800 IF(CODE.EQ.-33.)GO TO 440
49900 V(I)=Z*VX1
50000 GO TO 7361
50100 440 IF(Z.EQ.85.)GO TO 540
50200 Y=0
50300 IF(INVRT.EQ.0)Y=(X-Z)*2.
50400 V(I)=Z+VX1+Y
50500 GO TO 7361
50600 540 V(I)=Z
50700 7361 I=I+1
50800 KN=KN+JC
50900 IF(KN.NE.M)GO TO 940
51000
51100 INVRT=-1
51200 RB=V(I-1)
51300 CC ICT=-1
51400 DO 8361 L=JD,72
51500 JG=INP(L)
51600 CC IF(JG.EQ.ISEMI)GO TO 93611
51700 C PUT IN NOV 25, 72
51800 IF(JG.EQ.ISEMI)GO TO 93612
51900 INP(L)=IBLA
52000 IF(JG.EQ.KSLA)GO TO 9361
52100 IF(JG.EQ.')')IPRN=IPRN+1
52200 CC8361 IF(JG.EQ.'*')ICT=0
52300 8361 IF(JG.EQ.'*')IAMP=-1
52400 9361 MLX=L
52500 C FIX THIS & =IBLA BY CHNGING DO LOOP TO 'GO TO' AT 6721,2722
52600 CC IF(ICT.AND.QTS)GO TO 17731
52700 CC↓↓↓↓↓↓↓↓↓↓↓ CHNGD JUNE 24,73 IF(IAMP.EQ.0.AND.QTS)GO TO 17731
52800 IF(IAMP.EQ.0.AND.QTS)GO TO 1773
52900 JZ=-1
53000 CC IF(QTS)GO TO 3013
53100 93612 IF(IAMP.EQ.0)GO TO 93611
53200 CC93612 IF(ICT.EQ.0)IAMP=-1
53300 C NOV 25, 72
53400 IF(QTS)GO TO 3013
53500 GO TO 2722
53600 CC93611 IF(ICT.EQ.0.AND.QTS.EQ.0)GO TO 2722
53700 CC93611 IF(IAMP.AND.QTS.EQ.0)GO TO 2722
53800 C THESE ARE FOR "LIT" ITEMS
53900 C ******* DO NOT USE '@-' OR '@$' WITH 'LIT' ****** ! ! ! !
54000 CC IF(QTS)GO TO 7773
54100 93611 IF(JG.EQ.ISEMI)GO TO 7773
54200 JZ=0
54300 IF(IPRN.NE.0)GO TO 1773
54400 C ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑PICKS UP ' @X)/ ' SITUATION. 22/6/73
54500 GO TO 236
54600 C LAST TIME FOR QUOTES
54700
54800 CC93611 IF(ICT.AND.QTS)GO TO 7773
54900 C********↑↑ ↑↑ WAS TO 6017 JUNE 10,71
55000 CC IF(QTS)GO TO 3013
55100 CC IF(ICT)GO TO 6721
55200 C JUMPS TO END STRING OF QUOTES
55300 6361 CONTINUE
55400 GO TO 99
55500 C @@@@@@@@@@@@@@@@@@@@@@@@@@
55600 5361 IF(N.NE.ID.OR.ISUB.NE.1)GO TO 53611
55700 IF(INP(JD+1).NE.IF)GO TO 236
55800 C JUMP IF NOT DUTY FACTOR
55900 DF=DF-100.
56000 CC GO TO 53611
56100 GO TO 43615
56200 53611 IF(N.NE.ISS.OR.INP(JD+1).NE.'U')GO TO 53612
56300 DF=DF-200
56400 C FOR SUBROUTINE FLAG. CAN'T CALL SUBR AT SAME TIME AS REP OR X!!!!
56500 GO TO 43615
56600 53612 IF(N.NE.IAA)GO TO 43611
56700 C FINDS 'ALL'.
56800 IF(INP(JD+1).NE.'L')GO TO 236
56900 ALL=-1.
57000 CC INP(JD+2)=IBLA
57100 CC53611 INP(JD)=IBLA
57200 CC INP(JD+1)=IBLA
57300 CC GO TO 236
57400 GO TO 43615
57500 C TYPE 'ALL' AFTER PARAM NUM TO PUT DATA IN ALL INSTS.
57600
57700 C QUAD CALL MUST BE IN 1ST OF 5 PARAMS. QUAD MUST BE FOLLOWED
57800 C BY SPC, / OR ;. OTHER CALLS SUCH AS MOVE,NUM ETC. CAN
57900 C APPEAR BEFORE / OR ;, BUT "ALL" MUST! APPEAR
58000 C BEFORE! QUAD (IF USED).
58100 C ADD AN "F" TO QUAD FOR FUNCTIONS, AN "X" FOR X,Y COORDS.
58200 C BASIC QUAD PRODUCES CIRCLES. /DEGS/RADIUS/CENT. X/CENT. Y/
58300 C QUADX -- /X /Y / (5TH PARAM WILL ALWAYS BE WASTED)
58400 43611 IF(N.NE.'Q'.OR.INP(JD+1).NE.'U')GO TO 4361
58500 QX=-13.
58600 DO 43612 N=JD,72
58700 J=INP(N)
58800 IF(J.EQ.IXX)QX=QX-1.
58900 IF(J.EQ.IF)QX=QX-2.
59000 IF(J.EQ.IBLA.OR.J.EQ.KSLA.OR.J.EQ.ISEMI.OR.J.EQ.',')GO TO 236
59100 43612 INP(N)=IBLA
59200 4361 IF(N.NE.'I')GO TO 43613
59300 IF(ISUB.NE.4)GO TO 43613
59400 C NEXT MAKES INST NAME, P1 AND P2 INVISIBLE (REPLACES SEG, ETC.)
59500 INVIS(LK)=-1
59600 43615 DO 43614 L=JD,72
59700 N=INP(L)
59800 IF(N.EQ.IBLA.OR.N.EQ.','.OR.N.EQ.ISEMI.OR.N.EQ.KSLA)GO TO 236
59900 43614 INP(L)=IBLA
60000 43613 IF(N.NE.KSLA)GO TO 636
60100 MLX=JD+1
60200 JZ=-1
60300 INP(JD)=ISEMI
60400 436 IF(INP(MLX).NE.IBLA)GO TO 336
60500 MLX=MLX+1
60600 GO TO 436
60700 636 IF(N.NE.ISEMI)GO TO 936
60800 336 IF(ISUB.EQ.104)GO TO 104
60900 IF(ISUB.GT.3)GO TO 1899
61000 GO TO (101,102,103),ISUB
61100 C PAR MOV LIST OTHERS
61200 936 IF(N.NE.IDOT)GO TO 736
61300 L=INP(JD+1)
61400 DO 836 KL=1,10
61500 836 IF(L.EQ.IDAT(KL))GO TO 236
61600 IF(CODE.EQ.-22.)INP(JD)=1
61700 GO TO 236
61800 C CHANGES DOTTED RHYTHMS TO '1'S.
61900 736 IF(N.NE.'*')GO TO 136
62000 IAMP=-1
62100 INP(JD)=IBLA
62200 C ******* WAS ISEMI ****** WHY?
62300 136 IF(N.NE.IQT)GO TO 236
62400 DO 1361 K=JD+1,72
62500 IF(INP(K).NE.IQT)GO TO 1361
62600 JD=K+1
62700 GO TO 975
62800 C SKIPS MATE∧aP⊂⊂IN QUOTES
62900 1361 CONTINUE
63000 GO TO 99
63100 C OPEN QUOTES
63200 236 JD=JD+1
63300 IF(JD.LT.73)GO TO 975
63400 TYPE 1236
63500 GO TO 99
63600 1236 FORMAT(' MISSING SEMICOLON')
00100 101 N=INP(ML)
00200 IZ=ML
00300 ML=ML+1
00400 IF(N.EQ.IBLA)GO TO 101
00500 C ⊗⊗⊗⊗⊗ MAY 13,71 @@@@@@@@@@
00600 JA=-1
00700 IF(N.EQ.IPP)GO TO 1
00800 IF(N.EQ.IE)GO TO 2308
00900 IF(N.EQ.'R')GO TO 2337
01000 C 'RUN' MAY REPLACE 'END' FOR LAST INST.
01100 IF(N.EQ.ID)GO TO 7720
01200 GO TO 99
01300 1 CALL SCANR
01400 LPAR=VX1
01500 IJ=LPAR
01600 IF(QX.GE.0)GO TO 5703
01700 IJ=LPAR+4
01800 C SETS UP PARAM FOR QUAD CALL
01900 V(I)=IJ+LK*10000
02000 V(I+1)=2*ALL
02100 C TEST "ALL" FEATURE HERE!!!!!!!
02200 C X=-13(DEGREES),=-14(X,Y),=-15(CIRCLE FUNCTS),=-16(LINE FUNCTS)
02300 V(I+2)=QX
02400 I=I+3
02500 QX=0.
02600 5703 IAMP=0
02700 IF(IJ.GT.NP(LK).AND.IJ.LT.31)NP(LK)=IJ
02800 IF(LPAR.EQ.32)LPAR=1
02900 V(I)=LPAR+LK*10000
03000 C +1=WDCNT, +2=CODE, +3='NM' CCCCC
03100 IJ=I+1
03200 I=I+4
03300 ITMP=0
03400 CODE=0
03500 NFLG=1
03600 ML=IZ+M
03700 C RE=REP R=RHY L=LIT M=MOVE MX=MOVX N=NOTES NU=NUM
03800 C S--L=SUBL S--N=SUBN T=TAP RT=RTAP RL=RLIST RN=RNOTES
03900 C QU=QUADC QUX=QUADX
04000 5702 ML=ML+1
04100 IF(ML.GT.72)GO TO 99
04200 N=INP(ML)
04300 IF(N.EQ.IBLA.OR.N.EQ.',')GO TO 5702
04400 NL=INP(ML+1)
04500 JA=-1
04600 ISUB=0
04700 IF(N.EQ.IXX)GO TO 2703
04800 IF(N.EQ.'R')GO TO 6702
04900 IF(N.EQ.IF)GO TO 8702
05000 CC IF(N.EQ.ID)GO TO 1703
05100 4005 JA=0
05200 IF(N.EQ.IEN)GO TO 6005
05300 IF(N.EQ.'M')GO TO 703
05400 IF(N.EQ.'L')GO TO 2720
05500 IF(N.EQ.ISS)GO TO 6703
05600 IF(N.EQ.ITT)GO TO 4018
05700 IF(N.EQ.IQT)GO TO 5720
05800 IF(N.EQ.ISEMI)GO TO 2018
05900 IF(N.EQ.IPP)JA=-1
06000 C FOR /P5 P3/
06100 CALL SCANR
06200 IF(ISUB.EQ.8)GO TO 8
06300 I=I+JJ
06400 V(IJ+1)=NNUM+DF
06500 IF(JJ.EQ.1)GO TO 4006
06600 C IF NNUM IS '-2' THEN NOTES ARE PRINTED
06700 IF(NNUM.NE.-2)GO TO 5006
06800 IX=IJ+3
06900 DO 2006 K=2,JJ,3
07000 CC X=VX(K)
07100 CC Y=VX(K+1)
07200 CC IF(X.GT.Y)VX(K)=X+.999
07300 CC2006 IF(Y.GT.X)VX(K+1)=Y+.999
07400 2006 CALL RANR(VX,K)
07500 C FOR RAN. SELEC. OF NOTES. FINDS HIGHEST NOTE.
07600 5006 IX=IJ+2
07700 DO 6006 K=1,JJ
07800 6006 V(IX+K)=VX(K)
07900 V(IX+JJ-2)=1.
08000 C ABOVE ENSURES THAT LAST RAND. UNIT REACHES 100% - 5/74 *********
08100 GO TO 3013
08200 4006 IF(JA)VX1=VX1/100.+9999.
08300 C CHANGES /P5 P3/ TO /P5 9999.03/
08400 V(I-1)=VX1
08500 GO TO 3013
08600 6702 IF(NL.EQ.IE)GO TO 2703
08700 C JUMP IF "REP"
08800 IF(NL.EQ.ITT)GO TO 4018
08900 C JUMP IF "RTAP"
09000 CODE=-22
09100 IF(NL.EQ.'L')CODE=-46.0
09200 C JUMP IF "RLIST" (LIST OF RAND SELECTIONS)
09300 IF(NL.NE.IEN)GO TO 1016
09400 C JUMP IF NOT "RNOTES"
09500 JA=0
09600 C FOR SCANR
09700 CODE=-36.
09800 GO TO 1016
09900 6005 CODE=-33
10000 IF(NL.NE.'U')GO TO 1016
10100 CODE=-44.
10200 1610 JA=-1
10300 GO TO 1016
10400 8702 CODE=-35
10500 IF(NL.EQ.'U')GO TO 1016
10600 ML=ML+1
10700 CALL SCANR
10800 7 V(IJ+1)=CODE+DF
10900 V(IJ+2)=1.
11000 V(I)=VX1+85.
11100 GO TO 7703
11200 703 BW=V(IJ-2)
11300 IC=0
11400 DO 7031 K=ML+1,72
11500 IF(INP(K).EQ.ISEMI)GO TO 8031
11600 7031 IF(INP(K).EQ.IXX)IC=-1
11700 C**************** JUNE 1,71 X 4
11800 8031 I=I-1
11900 V(I)=0
12000 C ********* FEB. 15,71
12100 X=-9900.-BY
12200 IF(BY.EQ.0)X=-9900.-BG(LK)
12300 IF(BW.EQ.X)GO TO 8005
12400 IF(BW.NE.-9900.-BY)GO TO 1102
12500 V(IJ-2)=X
12600 GO TO 8005
12700 1102 V(IJ)=V(IJ-1)
12800 V(IJ-1)=X
12900 IJ=IJ+1
13000 I=I+1
13100 8005 LP=IJ-1
13200 BW=-9900.-X
13300 ISUB=2
13400 IZ=-1
13500 C ABOVE ARRANGES NECESSARY BG TIME HEADINGS.
13600 4703 GO TO 1299
13700 102 IF(IZ.LT.0)GO TO 2102
13800 BW=V(ICT)+BW
13900 V(I)=-9900.-BW
14000 V(I+1)=V(LP)
14100 V(I+2)=(JJ+2)*ALL
14200 V(I+3)=CODE+DF
14300 I=I+4
14400 IZ=1
14500 2102 IF(BW.LT.10000.)CALL BGSORT(BW)
14600 C ROUND-OFF NONSENSE
14700 2 VX3=-9900.
14800 VX2=VX3
14900 CALL SCANR
15000 IF(JJ.EQ.4)GO TO 99
15100 IF(VX3.NE.-9900.)GO TO 3102
15200 IF(VX2.NE.-9900.)GO TO 4102
15300 VX2=VX1
15400 VX1=10000.
15500 4102 VX3=VX2
15600 JJ=3
15700 C 1,2 OR 3 NUMS CAN BE USED IN NON-RAN MOVES.
15800 3102 IF(IZ.GE.0)GO TO 3006
15900 V(IJ)=(JJ+2)*ALL
16000 C WORD COUNT
16100 CODE=-55.
16200 IF(JJ.NE.3)CODE=-57.
16300 C THIS IS NOW OUT, FEB 15,70. -10000. MEANS 'NOTES AT BG TIME 0'
16400 IF(NFLG)CODE=CODE-1.
16500 IF(IC)CODE=-59.
16600 C**************** JUNE 1,71
16700 C CODE=-56 OR -58 FOR NOTES.
16800 V(IJ+1)=CODE+DF
16900 IZ=0
17000 3006 IF(NFLG.EQ.1)GO TO 5005
17100 CC IF(VX2.GT.VX3)VX2=VX2+.999
17200 CC IF(VX3.GE.VX2)VX3=VX3+.999
17300 CC IF(JJ.EQ.3)GO TO 5005
17400 CC IF(VX4.GT.VX5)VX4=VX4+.999
17500 CC IF(VX5.GE.VX4)VX5=VX5+.999
17600 CALL RANR(VX,2)
17700 IF(JJ.NE.3)CALL RANR(VX,4)
17800 C FOR RAN. SELEC. OF NOTES. FINDS HIGHEST NOTE.
17900 5005 ICT=I
18000 IJ=IJ+1
18100 DO 1006 K=1,JJ
18200 1006 V(IJ+K)=VX(K)
18300 I=I+JJ
18400 IJ=I+2
18500 IF(IAMP.EQ.0)GO TO 1299
18600 C*************** MAY 18,71 ***** ALWAYS RESETS TO TIME 0 WHEN MOVE IS USED.
18700 V(I)=-9900.-BY
18800 GO TO 8703
18900 CC1703 IF(NL.NE.IF)GO TO 4005
19000 CC CODE=-45.
19100 CC GO TO 1016
19200 C ABOVE IS**** WAS ***** FOR 'DF' (DUTY FACTOR)
19300 7703 V(IJ)=4.*ALL
19400 8703 I=I+1
19500 GO TO 4773
19600 C FOR SUBROUTINES, -12=NUMS. -11=LETTERS.
19700 6703 CODE=-12.
19800 IF(INP(ML+3).EQ.'L')CODE=-11.
19900 V(IJ)=2.*ALL
20000 V(IJ+1)=CODE+DF
20100 I=I-1
20200 GO TO 4773
20300 4018 CNT(LK)=-9900.-BY
20400 P(LK)=V(I-4)
20500 JREAD=3
20600 GO TO 4400
20700 C JUMPS TO READER
20800 443 IF(LN.NE.0)REREAD 107,K,IPT(LK,1)
20900 IF(LN.EQ.0)REREAD 8001,IPT(LK,1)
21000 C NAME OF RHYTHM FILE. (ONLY ONE PER INST.) READS DATA JUST BEFORE RUN
21100 IF(NL.NE.ITT)GO TO 2338
21200 CODE=-23.
21300 GO TO 1016
21400 2338 I=I-4
21500 GO TO 4773
21600 3018 CNT(KZY)=-9900.
21700 JREAD=4
21800 GO TO 4400
21900 444 IF(LN.NE.0)REREAD 107,K,IPT(KZY,1)
22000 IF(LN.EQ.0)REREAD 8001,IPT(KZY,1)
22100 P(KZY)=980000.
22200 GO TO 2308
22300 C CAN'T USE 'TAP' OR 'RTAP' WITH INST KZY IF USING 'CONDUCT'.
22400 C 'REP'
22500 2703 ML=ML+1
22600 VX1=0
22700 VX2=0
22800 VX3=0
22900 IF(N.EQ.IXX)GO TO 2704
23000 INP(ML)=IBLA
23100 INP(ML+1)=IBLA
23200 C WIPES OUT 'EP' IN 'REP'
23300 2704 CALL SCANR
23400 V(IJ)=3.
23500 V(IJ+1)=-66.0
23600 IF(VX1.EQ.32.)VX1=1.
23700 IF(VX1.EQ.0)VX1=LPAR
23800 IF(VX2.EQ.0)VX2=LK-1
23900 V(IJ+2)=VX1+VX2*10000.
24000 KL=VX2
24100 IF(DUR(LK).LT.0)DUR(LK)=DUR(KL)
24200 IF(VX3.EQ.0)GO TO 4773
24300 L=VX3
24400 ML=LK+1
24500 DO 1018 KL=ML,L
24600 IF(LPAR.GT.NP(KL).AND.LPAR.LT.31)NP(KL)=LPAR
24700 IF(DUR(KL))DUR(KL)=DUR(LK)
24800 C TO SET DUR WHEN DUPLICATING NOTES THAT END WITH 'END;;'
24900 V(I)=V(I-4)+10000.
25000 V(I+1)=3.
25100 V(I+2)=-66.
25200 V(I+3)=V(I-1)
25300 1018 I=I+4
25400 GO TO 4773
25500
25600 2018 IF(DF.EQ.0)GO TO 20181
25700 C NEXT FOR Pn SUBR/ I.E. NOTHING BUT P AND SUB CALL. 7/73
25800 V(IJ+1)=-201.
25900 V(IJ+2)=1.
26000 V(IJ+3)=0
26100 GO TO 7703
26200 20181 V(IJ)=3.
26300 V(IJ+1)=-66.
26400 V(IJ+2)=NW+LK*10000
26500 GO TO 4773
26600 C READS /P5 .3 "ABC" .7 "XYZ"/
26700
26800 8 V(IJ+1)=-77.+DF
26900 C DF HAS SUBR CALL INFO
27000 I=I+1
27010 VX(JJ-1)=1
27055 C FOR RAND. SINGLE LITS.
27100 DO 3722 K=1,JJ,2
27200 V(I)=VX(K)
27300 3722 I=I+1
27400 V(IJ+2)=JJ/2
27500 V(IJ+3)=I
27600 DO 4722 K=2,JJ,2
27700 KN=I
27800 I=I+1
27900 L=VX(K)
28000 DO 6722 KL=L,72
28100 IF(INP(KL).EQ.IQT)GO TO 4722
28200 IV(I)=INP(KL)
28300 6722 I=I+1
28400 4722 V(KN)=I-KN-1
28500 V(IJ)=(I-IJ)*ALL
28600 GO TO 4773
28700 2720 QTS=0
28800 ISUB=104
28900 GO TO 1299
29000
29100 104 DO 6721 K=ML,72
29200 JC=K+1
29300 IF(INP(K).EQ.IQT)GO TO 7721
29400 6721 IF(INP(K).EQ.KSLA.OR.INP(K).EQ.ISEMI)GO TO 7232
29500 C FOR REPEAT OF ITEM BY SLASH
29600 7232 DO 7231 K=I-1,1,-1
29700 IF(ABS(V(K)).GT.72.)GO TO 7231
29800 NL=V(K)
29900 DO 7230 KL=K,K+NL
30000 V(I)=V(KL)
30100 7230 I=I+1
30200 GO TO 27222
30300 7231 CONTINUE
30400
30500 5720 IAMP=-1
30600 JC=ML+1
30700 C FOR SINGLE 'LIT' ITEMS.
30800 7721 DO 1722 KL=JC+1,72
30900 IF(INP(KL).NE.IQT)GO TO 1722
31000 JD=KL-1
31100 ML=KL+1
31200 NL=KL-JC
31300 C EXTENT OF LIT ITEM IS FOUND
31400 GO TO 8721
31500 1722 CONTINUE
31600 C CAN'T USE SLASH FOR REPEAT AFTER @Q
31700 8721 V(I)=NL
31800 DO 9721 K=JC,JD
31900 C PUTS ITEM IN "IV" ARRAY
32000 I=I+1
32100 9721 IV(I)=INP(K)
32200 I=I+1
32300 27222 IF(IAMP.EQ.0)GO TO 1299
32400 2722 V(I)=999.
32500 QTS=-1.
32600 27221 V(IJ+1)=-88.+DF
32700 V(IJ)=(I-IJ+1)*ALL
32800 IJ=IJ+2
32900 V(IJ)=IJ+1
33000 I=I+1
33100 ISUB=1
33200 GO TO 1299
33300
33400 7720 V(I)=LK
33500 V(I+1)=3.
33600 V(I+2)=-67.
33700 ML=ML+4
33800 CALL SCANR
33900 V(I+3)=VX1
34000 I=I+4
34100 L=VX1
34200 IF(NP(LK).LT.NP(L))NP(LK)=NP(L)
34300 IF(DUR(LK).LT.0)DUR(LK)=DUR(L)
34400 GO TO 4773
34500 C TYPE 'DUPL N;' N=INST # TO BE DUPLICATED.
34600 142 FORMAT(I,15A5)
34700 1301 FORMAT(15A5)
34800 2773 FORMAT(I,A5,72A1)
34900 2114 FORMAT(I,72A1)
35000 300 FORMAT(I,3F,A1)
35100 301 FORMAT(3F,A1)
35200 6 KB=KB+1
35300 IF(JED.GT.0)JED=0
35400 IF(J.EQ.'INSER')GO TO 1340
35500 OTH(KB,1)=VX1*100000.+VX2*100.+VX3
35600 GO TO 340
35700 1340 X=VX1
35800 IF(VX2.NE.0)X=1000000.+VX1*100000.+VX2
35900 OTH(KB,1)=X
36000 GO TO 1338
36100 C ABOVE IS TO PUT INSERT AFTER NOTE # OF A PARTICULAR
36200 C INSTRUMENT. FOR COMMENT AT START, SET BG TIME TO 1,1
36300 C - BEGIN LINE WITH <,END WITH ;
36400 C UP TO 75 CHARACTERS MAY BE TYPED.
36500 340 IF(VX3.NE.2)GO TO 1338
36600 IF(ITYP.GE.0)GO TO 449
36700 JREAD=5
36800 GO TO 4400
36900 445 OTH(KB,3)=1.
37000 IF(LN.EQ.0)GO TO 447
37100 REREAD 300,K,OTH(KB,2)
37200 GO TO 1447
37300 447 REREAD 301,OTH(KB,2)
37400 1447 IF(JED)GO TO 2308
37500 3445 TYPE TEDIT
37600 ACCEPT 77732,K
37700 IF(K.EQ.'G')JED=-1
37800 IF(J.EQ.'INSER')GO TO 3446
37900 IF(K.NE.'Y'.OR.JED)GO TO 2308
38000 449 TYPE TPALN
38100 ACCEPT 301,OTH(KB,2)
38200 IF(JED)WRITE(21,301) OTH(KB,2)
38300 GO TO 2308
38400
38500 1338 IF(ITYP.GE.0)GO TO 1449
38600 JREAD=6
38700 GO TO 4400
38800 446 IF(LN.EQ.0)GO TO 448
38900 REREAD 142,K,(OTH(KB,JD),JD=2,16)
39000 GO TO 1446
39100 448 REREAD 1301,(OTH(KB,JD),JD=2,16)
39200 1446 IF(JED)2446,3445,2446
39300 3446 IF(K.NE.'Y'.OR.JED)GO TO 2446
39400 1449 TYPE TPALN
39500 ACCEPT 1301,(OTH(KB,JD),JD=2,16)
39600 IF(JED)WRITE(21,1301)(OTH(KB,JD),JD=2,16)
39700 2446 X=OTH(KB,2)
39800 IF(J.EQ.'INSER'.AND.VX3.NE.0.AND.X.NE.'*')GO TO 6
39900 IF(X.EQ.'*')KB=KB-1
40000 C ALLOWS SEVERAL LINES OF 'INSERT' IF ANY 3RD #.
40100 C LAST LINE HAS '*' IN COLUMN 1.
40200 GO TO 2308
40300 C IF NO PARAM NUM IS GIVEN, ALL PARAMS MUST BE TYPED.
40400 C INSERT MAY INCLUDE 10 CHARS(P3-P30),
40500 C P2, A # ONLY. IF MORE THAN 1 PARAM IS TO BE EDITED AND
40600 C P2 IS ONE OF THEM, FIRST EDIT P2 TO DESIRED VALUE,
40700 C CHANGE P2 TO MINUS = THEN INSERT ENTIRE NOTE TO PLAY
40800 C JUST AFTER ORIGINAL NOTE(WHICH WILL BE A REST).
40900 C BX=INST N. Y=NOTE N. Z=PARAM N.
41000 1899 CALL SCANR
41100 GO TO(1,2,3,4,5,6),ISUB
00100 1106 KTMP=1
00200 TP=60.
00300 IAMP=0
00400 BW=BY
00500 ITMP=-1
00600 ISUB=5
00700 JA=-1
00800 GO TO 2016
00900 3019 V(I)=990000.00
01000 V(I+1)=4.
01100 V(I+2)=VX1
01200 V(I+3)=VX2/TP
01300 V(I+4)=VX3/TP
01400 I=I+5
01500 BY=BW
01600 C SEPT 18, 70
01700 IF(VX1.EQ.0)GO TO 2308
01800 BW=BW+VX1
01900 V(I)=-9900.-BW
02000 I=I+1
02100 CALL BGSORT(BW)
02200 9003 IF(IAMP)GO TO 4003
02300 2016 VX3=0
02400 VX2=0
02500 GO TO 1299
02600 5 IF(VX2.NE.0)GO TO 105
02700 C 'TEMPO/120*;' OR 'TEMPO/1.5 72*;' IS OK.
02800 VX2=VX1
02900 VX1=0
03000 105 IF(VX3.EQ.0)VX3=VX2
03100 IF(VX2.LT.11.)TP=1.
03200 IF(J.EQ.ITMPO)GO TO 3019
03300 PCH(1,KTMP)=VX1
03400 PCH(2,KTMP)=VX2
03500 PCH(3,KTMP)=VX3
03600 C PCH(1)=TIME (2)=MM1 (3)=MM2
03700 KTMP=KTMP+1
03800 IF(IAMP.EQ.0)GO TO 2016
03900 4003 VX1=0
04000 IAMP=0
04100 VX2=VX3
04200 IF(J.EQ.ITMPO)GO TO 3019
04300 PCH(1,KTMP)=0
04400 PCH(2,KTMP)=VX2
04500 PCH(3,KTMP)=VX2
04600 C MM CAN BE FROM 11 UP ITMPO FACTOR FROM 10 DOWN.
04700 C UP TO 30 ITMPO CHANGES MAY BE MADE.
04800
04900 1016 IA=I
05000 IZ=1
05100 3100 V(I-2)=CODE+DF
05200 ISUB=3
05300 5016 IF(IAMP.GE.0)GO TO 1299
05400 117 IF(IZ-2)3013,9004,9004
05500 103 K=INP(ML)
05600 IF(K.EQ.ITT)GO TO 1106
05700 IF(K.EQ.ISEMI)GO TO 1014
05800 IF(K.NE.IBLA) GO TO 1899
05900 ML=ML+1
06000 GO TO 103
06100 C@@@@@@@@ MAY 13,71 @@@@@@
06200 C**********FEB 19,71
06300 C ABOVE
06400 3 IF(VX1.EQ.-99.)GO TO 4022
06500 IF(CODE.EQ.-22.)GO TO 2017
06600 C************ MAY 19,71
06700 IF(CODE.LT.-23.OR.IZ/2*2.EQ.IZ)GO TO 17
06800 C CHECKS PAIRS OF NUMBERS FOR 'RTAP'
06900 2017 IF(VX1.EQ.10000.)GO TO 17
07000 VX1=4./VX1
07100 IF(JJ.NE.1)GO TO 2014
07200 V(I)=VX1
07300 GO TO 114
07400
07500 1217 IF(VX1.EQ.10000.)GO TO 114
07600 C FOR "FINE" IN LIST
07700 CC IF(CODE.EQ.-46.)GO TO 4217
07800 CC IF(VX1.GT.VX2)V(I)=VX1+.999
07900 CC IF(VX2.GT.VX1)VX2=VX2+.999
08000 C ABOVE EXTENDS RANGE TO GIVE HIGHEST NOTE A CHANCE
08100 CC4217 V(I+1)=VX2
08200 V(I+1)=VX2
08300 IF(CODE.EQ.-36.)CALL RANR(V,I)
08400 2217 I=I+1
08500 C SETS UP STRING OF RAND SELECTIONS
08600 GO TO 114
08700 3217 V(I)=V(I-2)
08800 V(I+1)=RB
08900 C FOR SLASH REPTS OF RAND SELEC UNITS. ("REP" CAN'T BE USED!)
09000 GO TO 2217
09100 C******** PUT IN ERROR TRAP FOR "REP" ETC. ******
09200
09300 2014 DO 9006 L=2,JJ
09400 IF(VX(L).EQ.0)GO TO 17
09500 9006 VX1=4./VX(L)+VX1
09600 JJ=1
09700 17 V(I)=VX1
09800 IF(CODE.EQ.-46..OR.CODE.EQ.-36.)GO TO 1217
09900 C JUMP IF STRING OF RAND SELECS.
10000 IF(JJ.EQ.1)GO TO 114
10100 L=VX(JJ)-1
10200 X=V(I)
10300 NL=I+1
10400 I=L+I
10500 DO 1017 K=NL,I
10600 1017 V(K)=X
10700 C ADDS UP TOTAL OF NOTES IN SEQ.
10800 IZ=IZ+L
10900 GO TO 114
11000 1014 IF(CODE.EQ.-46..OR.CODE.EQ.-36.)GO TO 3217
11100 V(I)=RB
11200 C RB SAVES IT FOR SLASH REPEAT
11300 114 RB=V(I)
11400 I=I+1
11500 IZ=IZ+1
11600 GO TO 5016
11700 4022 JC=VX2+.3
11800 JD=VX3-.5
11900 IF(JJ.EQ.2)JD=1
12000 C********* MAY 19,71 ----MANY LINES ABOVE.
12100 IZ=IZ+JC*JD
12200 C JC=HOW MANY TIMES, JD=HOW MANY NOTES
12300 DO 1005 K=1,JD
12400 NL=I+JC-1
12500 DO 2005 L=I,NL
12600 2005 V(L)=V(L-JC)
12700 1005 I=I+JC
12800 RB=V(NL)
12900 C RB SAVES DATA FOR SLASH REPEAT FEATURE.
13000 GO TO 5016
13100
13200 9004 IF(ITMP.EQ.0)GO TO 3013
13300 C*********** JUNE 1,71
13400 IZ=IZ-1
13500 C***** JAN. 1974
13600 KA=1
13700 IC=1
13800 K=0
13900 J=1
14000 Z=0
14100 RC=0
14200 9007 Y=PCH(3,IC)/TP
14300 X=PCH(2,IC)/TP
14400 Z=PCH(1,IC)
14500 YY=2.*Z/(Y+X)
14600 224 IF(YY.NE.0)YY=2.*(Z-X*YY)/YY**2
14700 XT(1)=X
14800 XA=RA
14900 RD=1
15000 RB=0
15100 ZZ=Z
15200 7020 RA=V(IA+K)
15300 IF(RA.EQ.10000.)GO TO 3013
15400 4020 RD=1
15500 IF(RA.LT.0)RD=-1.
15600 RA=RA*RD
15700 IF(KA.EQ.0)RA=RA-RC
15800 W=RA
15900 RB=W
16000 IF(W.LE.Z)GO TO 2020
16100 IF(Z.NE.0)GO TO 3020
16200 RA=RA/Y
16300 RB=-1.
16400 RC=0
16500 GO TO 8020
16600 3020 W=Z
16700 RC=W+RC
16800 GO TO 24
16900 2020 RC=0
17000 24 IF(X.NE.Y)GO TO 424
17100 RA=W/X
17200 GO TO 8020
17300 C DUR OF TMP + BG TIME OF TMP - NOTE VALUE -
17400 C BG TIME OF NOTE. CHN=TBG.
17500 424 RAX=XT(J)
17600 RA=(-2.*RAX+(4.*RAX**2+8.*YY*W)**.5)/(2.*YY)
17700 XT(J)=RAX+YY*RA
17800 8020 IF(KA.EQ.0)RA=RA+XA
17900 KA=1
18000 IF(RC.NE.0)GO TO 1011
18100 IF(T5.EQ.1)GO TO 8203
18200 V(IA+K)=RA*RD
18300 IF(K.EQ.IZ)GO TO 3013
18400 C*********** JUNE 1,71
18500 1011 IF(T5.EQ.1)GO TO 2011
18600 K=K+1
18700 IF(ZZ.NE.0)Z=Z-W
18800 IF((Z.GT.0).OR.(RB.EQ.-1.))GO TO 7020
18900 IC=IC+1
19000 IF(RB.EQ.W)GO TO 9007
19100 KA=0
19200 K=K-1
19300 GO TO 9007
19400 C********* MAY 13,71 OMITS REPEATED RHY. FEATURE.
19500 C ML=I-1
19600 C ML=I-1
19700 C*********** MAY 13,71 ********
19800 3013 X=I-IJ
19900 V(IJ+2)=X-3.
20000 V(IJ)=X*ALL
20100 IF(CODE.NE.-35)GO TO 4773
20200 M=IJ+3
20300 C SETS NUMBERS FOR FUNCS.
20400 DO 313 K=M,I-1
20500 313 IF(V(K).LT.85.)V(K)=V(K)+85.
20600 GO TO 4773
20700
20800 2011 XA=RA
20900 IF(K.GT.1)GO TO 9020
21000 K=I-6
21100 ZPAR=-9900.-CHN-ZZ
21200 DO 3011 KL=8,I
21300 IF((V(K).EQ.ZPAR).AND.(V(K+1).EQ.990000.))GO TO 9020
21400 3011 K=K-1
21500 9020 W=ZZ
21600 IF(V(K+3))K=K+3
21700 C ABOVE IS FOR TYPED IN TEMPO CHANGES
21800 KA=K+3
21900 ZZ=V(KA)
22000 C DUR OF NEXT TEMPI
22100 X=V(KA+1)
22200 Y=V(KA+2)
22300 213 KA=0
22400 Z=ZZ
22500 YY=2.*Z/(X+Y)
22600 YY=2.*(Z-X*YY)/YY**2
22700 CHN=CHN+W
22800 XT(J)=X
22900 IF(KA.EQ.1)Z=0
23000 RA=PR
23100 KA=0
23200 K=K+3
23300 GO TO 4020
00100 2337 T=0
00200 DO 1107 K=1,30
00300 1107 PL(K)=1.
00400 C 2/74--WAS AT 17300/1 SETS DEFAULT OUTPUT MODE TO 1.
00500 IF(ITYP)GO TO 23371
00600 END FILE 21
00700 DATA ENFI /25H(' INPUT ON FOR21.DAT'/) /
00800 TYPE ENFI
00900 C PUTS AWAY TYPED IN DATA. TO REUSE, EDIT FOR21.DAT.
01000 23371 IF(SOS)WRITE(JOUT,902)
01100 C WRITES A BLANK LINE
01200 NWZZ=0
01300 IAMP=0
01400 IT3=0
01500 K=1
01600 IX=0
01700 BG(NINS+1)=19999.
01800 4011 IF(CNT(K))GO TO 5011
01900 6011 IF(K.EQ.KZY)GO TO 4337
02000 K=K+1
02100 GO TO 4011
02200 5011 L=V(I-1)/(-9900.)
02300 IF(L.EQ.1)I=I-1
02400 V(I)=CNT(K)
02500 V(I+1)=P(K)
02600 V(I+3)=-44.
02700 I=I+5
02800 IF(P(K).EQ.980000.)I=I-4
02900 KL=I
03000 REWIND 1
03100 ICT=IPT(K,1)
03200 CALL IFILE(1,ICT)
03300 9011 L=I+6
03400 READ(1,7011)(V(M),M=I,L)
03500 C READS "CONDUCT" AND "RHYTHM" (TAP) DATA.
03600 IF(V(L).EQ.999.)GO TO 8011
03700 I=L+1
03800 GO TO 9011
03900 8011 IF(P(K).NE.980000.)GO TO 6337
04000 DO 7337 K=L,I,-1
04100 7337 IF(V(K).NE.999.)GO TO 8337
04200 8337 I=K-1
04300 V(I)=0
04400 V(I+1)=V(K)
04500 V(I+2)=V(K)
04600 C K WAS I-1 ABOVE.
04700 I=I+3
04800 V(KL+1)=I-KL-1
04900 C ABOVE RESETS WORDCOUNT FOR 'CONDUCT' DATA.
05000 GO TO 4337
05100 6337 DO 5337 M=I,L
05200 KN=M
05300 5337 IF(V(M).EQ.999.)GO TO 3337
05400 3337 I=KN
05500 KN=I-KL
05600 V(KL-1)=KN
05700 V(KL-3)=KN+3
05800 GO TO 6011
05900 7011 FORMAT(7F)
06000 4337 IF(V(I-1).EQ.-9900.-BY)I=I-1
06100 V(I)=-19899.
06200 PP1=0
06300 T6=10000.
06400 DO 2118 K=1,NINS
06500 ROFF(K)=0
06600 C********* FEB 17,71
06700 M=NP(K)
06800 IT(K)=0
06900 IPT(K,31)=0
07000 NCNT(K,31)=1
07100 DO 2118 L=1,M
07200 NCNT(K,L)=1
07300 2118 IPT(K,L)=0
07400 DO 5013 K=1,IXIN
07500 5013 X=RAND(0.0,0.0)
07600 REWIND 1
07700 IF(MX)CALL OFILE(1,ISLAC)
07800 NW=1
07900 NWX=0
08000 TDUR=0
08100 A=0
08200 T2=1.
08300 T4=1.
08400 T5=0
08500 J=1
08600 MK=0
08700 C IS THE ABOVE NEEDED?
08800 IF(MX.NE.3)GO TO 40021
08900 K=4
09000 CC10023 N=V(K)/-11.
09100 10023 N=AMOD(V(K),100.0)/-11.
09200 C AMOD NEEDED BECAUSE CODE # MAY HAVE -100 FOR DF OR -200 FOR SUBR.
09300 IF((N.NE.2.AND.N.NE.3.AND.N.NE.4).OR
09400 1 .V(K-2).LT.10000.)GO TO 10021
09500 J=V(K+1)
09600 IF(J.EQ.1)GO TO 10024
09700 IF(N.EQ.3.AND.V(K+J+1).EQ.101.)J=J-1
09800 N=V(K-2)
09900 L=N/10000
10000 M=N-L*10000
10100 TYPE 10022,INST(L),M,J
10200 10024 K=K+ABS(V(K-1))
10300 10021 K=K+1
10400 IF(K.LT.I)GO TO 10023
10500 40021 IF(MZ.NE.-4)GO TO 1002
10600 N=1
10700 40022 K=N+1
10800 IF(N.GT.I)CALL EXIT
10900 X=V(N)
11000 IF(X.EQ.-199..OR.X.EQ.-99.)GO TO 40024
11100 IF(X.GE.0)GO TO 40023
11200 PRINT 4002,X
11300 N=N+1
11400 GO TO 40022
11500 40024 J=N+1
11600 GO TO 40025
11700 C FOR 'SECTIONS'
11800 40023 J=ABS(V(K))+K-1
11900 40025 PRINT 4002,(V(K),K=N,J)
12000 N=J+1
12100 GO TO 40022
12200 10022 FORMAT(1XA5,' P',I2,' HAS ',I3,' ITEMS.')
12300 4002 FORMAT(10F12.3)
12400 1002 IF(IDALL)GO TO 600
12500 X=DUR(IDALL)
12600 DO 2002 K=1,NINS
12700 2002 IF(DUR(K))DUR(K)=X
00100 C ***** SORTER *************************
00200 C ******* OUTPUT LOOP FROM HERE ON ********
00300 600 IL=0
00400 C********** BELOW IS FOR 'SECTIONS'
00500 KODE=0
00600 NWX=NWX+1
00700 MK=MK+1
00800 Y=BNW(NW)
00900 723 IL=IL+1
01000 3723 Z=V(IL)
01100 IF(Z.EQ.-19899.)GO TO 732
01200 IF(Z.NE.-9900.-Y)GO TO 723
01300 C********** BELOW IS FOR 'SECTIONS'
01400 IF(V(IL-2).EQ.-199.)KODE=IV(IL-1)
01500 2723 IL=IL+1
01600 729 K=IL+2
01700 MOT=V(IL+1)
01800 RD=V(K)
01900 IF(RD.EQ.-67.)GO TO 3726
02000 RB=V(IL)
02100 C************ DOWN TO 4150 IS FOR 'SECTIONS'
02200 IF(RB.NE.-99.)GO TO 4150
02300 KODE=IV(K-1)
02400 2160 IF(KODE.EQ.0)GO TO 723
02500 IF(MZ)WRITE(JOUT,9150),KODE
02600 KL=Y/10000.
02700 RB=Y+KL*10000.
02800 DO 5150 KL=1,I
02900 IF(V(KL).NE.-199..OR.IV(KL+1).NE.KODE)GO TO 5150
03000 IV(K-1)=0
03100 C WHEN 'PLAY' HAS BEEN FOUND, INDENTIFIER CHNGED TO 0
03200 RD=V(KL+2)+9900.
03300 DO 6150 L=KL+2,I
03400 M=V(L)/(-9900.)
03500 IF(M.NE.1)GO TO 6150
03600 RA=RB+RD-V(L)-9900.
03700 V(L)=-9900.-RA
03800 C UPDATES BG TIMES INSIDE SECTION.
03900 CALL BGSORT(RA)
04000 C7150 IF(RA.EQ.BNW(KA))GO TO 6150
04100 C UPDATES LIST OF CHANGE TIMES.
04200 6150 IF(V(L).EQ.-299.)GO TO 160
04300 5150 CONTINUE
04400 160 IL=1
04500 GO TO 3723
04600 C*********** ABOVE IS FOR 'SECTION' REPEATS
04700 4150 LK=RB/10000.+.2
04800 IF(LK.GE.98)GO TO 7700
04900 LP=RB-LK*10000
05000 C LK=INST # LP=PARAM #
05100 LN=IPT(LK,LP)
05200 IPT(LK,LP)=IL+2
05300 IF(RD.EQ.-66.)GO TO 726
05400 IF(RD.EQ.-55..OR.RD.EQ.-56.)GO TO 1726
05500 IF(RD.EQ.-23)GO TO 6700
05600
05700 2727 ML=IPT(LK,LP)
05800 IF(MOT.GT.0)GO TO 3727
05900 C USE NEG WDCNT FOR 'ALL'
06000 DO 4727 KL=LK+1,NINS
06100 IF(NP(KL).LT.LP.AND.LP.LT.31)NP(KL)=LP
06200 IPT(KL,LP)=-(LK+(LP-1)*KZY)
06300 NCNT(KL,LP)=10000
06400 4727 IF(DUR(KL))DUR(KL)=1000.
06500 C ASSUMES THAT DURATIONS ARE SET IN 'NOTES'.
06600 C AFTER 'ALL' IS USED ONCE IT WORKS LIKE DUPL OR REP.
06700 CC GO TO 2150
06800 C ABOVE CHANGED TO BELOW DEC.6,72. 'ALL' WAS OMITTING 1ST ITEM.
06900 GO TO 727
07000 C 'MOVE' WITH 'ALL' KEEPS ORIGINAL TIME DATA REGARDLESS OF BG TIMES.
07100 3727 IF(V(IL).NE.V(LN-1).OR.LN.EQ.0)GO TO 727
07200 CC ************ JAN 20 ***********
07300 DO 1727 L=1,NINS
07400 DO 1727 KL=1,NP(L)
07500 IF(LN.NE.IPT(L,KL))GO TO 1727
07600 NCNT(L,KL)=10000
07700 C ******* JAN 29,70
07800 IPT(L,KL)=ML
07900 C RESETS POINTERS FOR DUPL AND REP INSTS.
08000 C *** 'ALL' WILL NOT WORK WITH RAN TF.!!!!!*******FEB 21,73
08100 1727 CONTINUE
08200 727 NCNT(LK,LP)=10000
08300 C******** MAY 13,71 RHY REP. FEATURE OMITTED.
08400 2150 IF(MOT)MOT=-MOT
08500 IL=IL+MOT+1
08600 3150 IF(V(IL))GO TO 3723
08700 GO TO 729
08800 726 RB=V(IL+3)
08900 K=RB/10000.
09000 L=RB-K*10000
09100 IPT(LK,LP)=-(K+(L-1)*KZY)
09200 GO TO 2727
09300 3726 LK=V(IL)
09400 M=V(K+1)
09500 KL=NP(M)
09600 DO 4726 L=1,KL
09700 IPT(LK,L)=IPT(M,L)
09800 IF(IPT(M,L).NE.0)NCNT(LK,L)=10000
09900 C****** JUN 29 71 (LK,L) WAS (L,K)....???????
10000 4726 CONTINUE
10100 IPT(LK,31)=IPT(M,31)
10200 K=0
10300 GO TO 2150
10400 C ABOVE IS FOR DUPLICATION ROUTINE NEXT ADJUSTS TIMES FOR 'RTAP'
10500 6700 KL=IL+V(IL+1)+1.3
10600 RC=V(K-2)
10700 1770 IF(V(KL))GO TO 700
10800 2700 KL=KL+V(KL+1)+1.3
10900 GO TO 1770
11000 700 KL=KL+1
11100 IF(Z.NE.V(KL-1).OR.V(KL).NE.RC)GO TO 2700
11200 KL=KL+3
11300 KN=IL+3
11400 LN=V(KN)+.3
11500 DO 3700 L=1,LN,2
11600 RA=V(L+KN)
11700 KA=V(L+KN+1)+.3
11800 RB=0
11900 DO 4700 LP=1,KA
12000 4700 RB=RB+V(KL+LP)
12100 DO 5700 LP=1,KA
12200 5700 V(KL+LP)=V(KL+LP)/RB*RA
12300 V(KL+KA)=V(KL+KA)+.00030
12400 3700 KL=KL+KA
12500 GO TO 2150
12600
12700 C BELOW FOR 'TEMPO' SETUP
12800 7700 T2=V(IL+4)
12900 T1=V(IL+3)
13000 TBG=Y
13100 TDUR=V(IL+2)
13200 AC=2.*TDUR/(T1+T2)
13300 AC=2.*(TDUR-T1*AC)/AC**2
13400 8700 IF(TDUR.EQ.0)TDUR=10000.
13500 T5=1.
13600 T6=TBG+TDUR
13700 IT3=1.
13800 IF(LK.EQ.98)IT3=IL+2
13900 T4=1.
14000 GO TO 2150
14100 C*************** ANY WDCNTS DOWN FROM HERE. *********
14200 C NEXT ADJUSTS 'MOVE' TIMES IF BG IS AT A NOTE NUMBER.
14300 1726 IF(V(IL-1).GT.-19000.)GO TO 2727
14400 RA=BT
14500 K=IL-1
14600 2726 V(K)=-9900.-RA
14700 ISUB=-1
14800 L=K+5
14900 RB=V(L)+V(L-1)
15000 V(L-1)=RA
15100 K=K+V(K+2)+2
15200 IF(V(K).GT.-19000..OR.V(K+1).NE.V(IL).OR.
15300 1 V(K).NE.-9900.-RB)GO TO 2727
15400 RA=RA+V(L)
15500 CALL BGSORT(RA)
15600 GO TO 2726
15700 C CONVERTS BG TIME OF NOTE NUM TO REAL TIME. DOESN'T WORK WITH -66!
15800 C NOW WE BEGIN ON!! NOTE NUM. NOT AFTER NOTE NUM.
15900 732 DO 2606 K=NW,NWZ
16000 2606 BNW(K)=BNW(K+1)
16100 NWZ=NWZ-1
16200 IF(NWZ.EQ.0)GO TO 2111
16300 IF(NWZZ.EQ.1)GO TO 5111
16400 NWZZ=1
16500 IF(NWZ.EQ.1)GO TO 1111
16600 DO 3111 K=1,NWZ
16700 IF(BNW(K).LT.1000.)GO TO 3111
16800 X=BNW(NWZZ)
16900 BNW(NWZZ)=BNW(K)
17000 BNW(K)=X
17100 NWZZ=NWZZ+1
17200 3111 CONTINUE
17300 5111 IF(NWZZ.EQ.NWZ)GO TO 1111
17400 L=NWZZ+1
17500 X=BNW(NWZZ)
17600 DO 4111 K=L,NWZ
17700 IF(BNW(K).GT.X)GO TO 4111
17800 RA=BNW(K)
17900 BNW(K)=X
18000 X=RA
18100 4111 CONTINUE
18200 BNW(NWZZ)=X
18300 GO TO 1111
18400 111 FORMAT(1XA5,'.DAT',12X,'EDIT FILE NAME=',A5,8X,
18500 1'V ARRAY=',I4,'/2000 TEMPO FACTOR=',F6.2,4X,
18600 1'RANDOM NUMBER =',I6/)
18700 1023 FORMAT(/' < ',A5,'.DAT '/1XA5)
18800 C********** BELOW IS FOR 'SECTIONS'
18900 9150 FORMAT(/3X'******* SECTION ',A1)
19000 2111 NWZ=-1
19100 C ABOVE ORDERS BNW DATA TO SAVE TIME AT 1108 ON PG5.
19200 1111 IF(MZ.EQ.0)GO TO 1601
19300 IF(NWX.NE.1)GO TO 1486
19400 WRITE(JOUT,111),ISLAC,IFLNM,I,TF,IXIN
19500 C*********** JUNE 1,71
19600 C********** BELOW IS FOR 'SECTIONS'
19700 1486 IF(KODE.NE.0)WRITE(JOUT,9150),KODE
19800 K=NWX-1
19900 C*********** JUNE 1,71
20000 IF(NWX.GT.1.AND.IT(J).NE.-3)WRITE(JOUT,3154),K,Y
20100 IF(IT(J).EQ.-3)WRITE(JOUT,5154),K,BX,INST(J)
20200 C*********** JUNE 1,71 X 3 K'S
20300
20400 DO 602 K=1,NINS
20500 48 LK=INST(K)
20600 C*********** JUNE 1,71
20700 IF(NCNT(K,31).NE.10000.AND.NWX.GT.1)GO TO 602
20800 CCNOV,72 IF(NCNT(K,31).NE.10000.AND.NWX.GT.1)GO TO 8826
20900 NCNT(K,31)=1
21000 IJ=IPT(K,31)
21100 X=0
21200 IF(IJ.NE.0)X=V(IJ+2)
21300 WRITE(JOUT,5396),LK,X
21400 X=DUR(K)
21500 IF(X.GT.10000.)GO TO 83
21600 WRITE(JOUT,8396),X
21700 CCNOV,72 GO TO 8826
21800 GO TO 602
21900 5396 FORMAT(5XA5,' RANDOM TF =',F4.2,10X,'DURATION =',$)
22000 7396 FORMAT('+',F5.0,' NOTES')
22100 CCNOV,72
22200 CC4396 FORMAT(5XA5,' % RANDOM RESTS DUR=',F7.3,'", FROM',
22300 CC 1F6.3,' TO',F6.3)
22400 CC485 FORMAT(5XA5,' % RANDOM RESTS = ',F4.2)
22500 CCNOV,72
22600 8396 FORMAT('+',F6.2,'"')
22700 83 X=X-10000.
22800 WRITE(JOUT,7396),X
22900 CCNOV,72 *************************************************
23000 CC8826 IF(NCNT(K,1).NE.10000)GO TO 602
23100 CC NCNT(K,1)=1
23200 CC IJ=IPT(K,1)+2
23300 C********* FEB 19,71
23400 CC IF(V(IJ)-5.)GO TO 7826
23500 CC WRITE(JOUT,4396),LK,V(IJ-1),V(IJ),V(IJ+1)
23600 C********* FEB 19,71
23700 CC GO TO 602
23800 CC7826 WRITE(JOUT,485),LK,V(IJ)
23900 CCNOV,72 *************************************************
24000 602 CONTINUE
24100 715 IF(IT3.NE.1.)GO TO 1602
24200 RA=T1*TP
24300 RB=T2*TP
24400 WRITE(JOUT,6154),RA,RB,TDUR
24500 IT3=0
24600 1602 IF(NWX.EQ.1)GO TO 315
24700 IF(IT(J).EQ.-3)GO TO 1108
24800 C*********** JUNE 1,71
24900 6154 FORMAT(' TMP=',F7.3,' TO',F8.3,' DURING',F6.2,' SECS.'/)
25000 7154 FORMAT(' ''CONDUCT'' FILE NAME = ',A5/)
25100 5154 FORMAT(/' << CHANGE',I3,' BEGINS ON NOTE',F5.0,1XA5,' >>'/)
25200 902 FORMAT(1XA5/)
25300 3154 FORMAT(/' << BASIC TIME OF CHANGE',I3,' IS',F8.3,'" >>'/)
25400 4154 FORMAT(' THE FIRST',F9.4,'" ARE OMITTED'/)
25500 C*********** JUNE 1,71
25600 IT(J)=IT(J)/10
25700 GO TO 1108
25800 315 IF(IT3.GT.1)WRITE(JOUT,7154),ICT
25900 IF(OP1.NE.0)WRITE(JOUT,4154),OP1
26000 1601 IF(NWX.GT.1) GO TO 1108
26100 IF(MZ)WRITE(JOUT,1023),ISLAC,PLAY
26200 IF(TF.GT.10.)TF=TF/60.
26300 TF=1000./TF
26400 DO 6015 K=1,30
26500 6015 COPY(K)=-9900.
26600 C INITS PARAM REPRESSION FEATURE.
26700 IF(KB.EQ.0)GO TO 9926
26800 ML=NINS+1
26900 NL=NINS+KB
27000 DO 9826 K=ML,NL
27100 9826 BG(K)=OTH(K-NINS,1)
27200 C 'OTH' INSERTS, WITH BG TIME IN SECONDS, CAN ONLY BE SET WITH TF=1
27300 9926 DO 5015 K=1,NINS
27400 IQ(K)=BG(K)*10000.
27500 BG(K)=0
27600 INP(K)=0
27700 P1(K)=0
27800 IF(DUR(K).LT.10000.)DUR(K)=DUR(K)-.0001
27900 C******* FEB. 16,71 FOR ROUND-OFF NONSENSE
28000 5015 CNT(K)=0
28100 IF(MX)WRITE(1,1023)ISLAC,PLAY
28200 BW=0
28300 GO TO 500
00100 752 FORMAT(1X15A5)
00200 1108 M=0
00300 JC=0
00400 IF(NWZ)GO TO 1740
00500 C NWZZ IS SET AT 3111 IN SORTR.
00600 DO 740 K=1,NWZZ
00700 X=BNW(K)
00800 IF(X-.0001.GT.BT.OR.X.LE.BW.OR.BW)GO TO 2740
00900 IT(J)=IT(J)*10
01000 NW=K
01100 GO TO 600
01200 2740 IF(X.LT.1000..OR.X-J*10000.NE.CNT(J)+1.)GO TO 740
01300 X=BT+PR
01400 NW=K
01500 BX=CNT(J)+1.
01600 IT(J)=-3
01700 GO TO 600
01800 740 CONTINUE
01900 IT(J)=0
02000 1740 IF(J.LE.NINS)GO TO 31
02100 7021 K=J-NINS
02200 IF(JC.GT.0)K=JC
02300 5740 IF(PP1.LT.OP1)GO TO 1752
02400 IF(MZ)WRITE(JOUT,752),(OTH(K,L),L=2,16)
02500 IF(MX)WRITE(1,752)(OTH(K,L),L=2,16)
02600 C IF TF .NE.1, ALL INSERT TIMES MUST BE RESET
02700 C IF FIRST PART OF NOTE LIST IS 'OMITTED', CHECK YOUR 'INSERTS'.
02800 DO 17521 L=3,30
02900 17521 COPY(L)=-9900.
03000 C SO THAT ALL PARAMS WILL PRINT,AFTER AN INSERT.
03100 1752 BG(K+NINS)=19999.
03200 OTH(K,1)=19999.
03300 IF(JC.GT.0)GO TO 21
03400 31 KL=1
03500 IF(KB.EQ.0)GO TO 2031
03600 DO 1031 L=1,KB
03700 K=L
03800 X=OTH(K,1)-1000000.
03900 M=X/100000.
04000 IF(M.NE.J.OR.IQ(J).NE.0)GO TO 1031
04100 C M=INST
04200 IF(X-M*100000.EQ.CNT(J)+1)GO TO 5740
04300 1031 CONTINUE
04400 IF(J.GT.NINS)GO TO 500
04500 2031 CNT(J)=CNT(J)+1
04600 ICT=CNT(J)
04700 C INSERT TRAP HERE FOR OVERLAP OF RESTARTED INSTS.******
04800 NPA=NP(J)
04900 PP1=P1(J)
05000 IF(BT.GE.DUR(J))GO TO 5174
05100 IF(IQ(J).EQ.0)GO TO 200
05200 P2=-IQ(J)/10000.
05300 IQ(J)=0
05400 CNT(J)=-1
05500 ICT=-1
05600 GO TO 4203
05700
05800 C MK IS FLAG FOR RESTS
05900 200 MK=0
06000 IF((BT.EQ.0.AND.J.EQ.1).OR.IPT(J,1).EQ.0)GO TO 203
06100 KN=IPT(J,1)-1
06200 IF(KN.GT.0)GO TO 12033
06300 12032 KN=JPT(-KN)
06400 IF(KN)GO TO 12032
06500 KN=KN-1
06600 C FOR 'ALL' IN P32. FOLLOWS UP ON POINTERS TO POINTERS!
06700 C SOMEDAY PUT P1(32) IN WITH OTHER PARAMS BELOW!!!!
06800 12033 IJ=V(KN)
06900 IF(ABS(V(KN)).EQ.4.)GO TO 1203
07000 C 'IABS' IS FOR -4 USED WITH 'ALL'
07100 Z=(BT+9900.+V(KN-2))/V(KN+2)
07200 C******* FEB 19,71
07300 IF(Z.GT.1.)Z=1.
07400 Y=V(KN+3)
07500 X=(V(KN+4)-Y)*Z+Y
07600 C******* FEB 19,71
07700 CC****** TAKEN OUT NOV 9,72 ??? IF(X.EQ.0)IPT(J,1)=0
07800 GO TO 204
07900 1203 X=V(KN+3)
08000 204 Y=RAND(0.0,1.0)
08100 IF(Y-X)MK=-1
08200
08300 203 DF=1.
08400 C DF=DUTY FACTOR
08500 DO 2155 L=2,NPA
08600 ISUB=0
08700 C WHY DOES ISUB APPEAR AT 14700/5?
08800 IDF=0
08900 C IDF IS DUTY FACTOR FLAG
09000 IJ=IPT(J,L)
09100 12031 IF(IJ)IJ=JPT(-IJ)
09200 IF(IJ)GO TO 12031
09300 C FOLLOWS UP ON POINTERS TO POINTERS!
09400 PM=1.
09500 IF(IJ.GT.1)GO TO 2157
09600 P(L)=0
09700 CC GO TO 21552
09800 GO TO 21551
09900 C 7/73
10000 2157 LN=IJ+2
10100 NM=ABS(V(IJ-1))+LN-4
10200 NL=V(IJ)
10300 IF(NL.GT.-200)GO TO 372
10400 ISUB=-1
10500 NL=NL+200
10600 C FOR SUBROUTINE FLAG
10700 372 IF(NL.GT.-100)GO TO 272
10800 IDF=-1
10900 NL=NL+100
11000 C DEC.6,72 FINDS DUTY FACTOR PARAM
11100 272 VIJ2=V(IJ+1)
11200 KN=NL/(-11)
11300 IF(KN.EQ.0)GO TO 1100
11400 GO TO (61,62,62,62,65,65,67,68),KN
11500 1100 IF(VIJ2.EQ.1.)GO TO 1200
11600 ML=3
11700 1900 KA=1
11800 VX1=0
11900 DO 1156 K=LN,NM,ML
12000 VX(KA+1)=V(K)+VX(KA)
12100 1156 KA=KA+1
12200 X=RAND(0.0,1.)
12300 DO 1157 K=2,11
12400 IF(X.GT.VX(K))GO TO 1157
12500 KL=K-1
12600 IF(KN.EQ.7)GO TO 6157
12700 GO TO 1400
12800 1157 CONTINUE
12900 1400 LN=IJ+3*KL
13000 1462 RA=V(LN)
13100 IF(RA.EQ.10000.)GO TO 5174
13200 C FOR "FINE" IN RLIST
13300 RB=V(LN+1)
13400 PAR=RAND(RA,RB)
13500 1300 IF(NL.NE.-1)PM=2.
13600 C IF 2 THEN PRINTS A5
13700 GO TO 1155
13800 1200 PAR=V(IJ+2)
13900 GO TO 1300
14000 C NEXT IS FOR SUBROUTINE AND QUAD CALLS
14100 61 IF(NL.LT.-12)GO TO 6100
14200 601 X=P2
14300 CC IF(NL.EQ.-11)PL(L)=2.
14400 C '.5' MAKES ALL SUBR PARAMS PRINTOUT.
14500 CALL SUBR
14600 C******MAY 25,71
14700 CC IF(P(L).EQ.10000.)GO TO 5174
14800 IF(DF)GO TO 5174
14900 C DF=-1 IN 'SUBR' WILL CAUSE 'END' FOR INST.
15000 CC PM=PL(L)
15100 IF(L.EQ.2)GO TO 4203
15200 IF(X.EQ.P2)GO TO 21552
15300 PP2=P2
15400 PR=P2
15500 GO TO 21552
15600 C ABOVE IS FOR P2 CHANGES IN SUBROUTINE
15700 C TF,TEMPO,CONDUCT WILL AFFECT P2 ONLY WHEN P2 CALLS THE SUBR.,
15800 C ALL 'TEMPO' CHANGES WILL BE IGNORED!! (THEN DUR. IN SECS. MUST
15900 C BE SET TO 'REAL TIME'.)
16000
16100 C NEXT IS FOR QUAD ROUTINES
16200 6100 CALL QUAD(NL)
16300 GO TO 21552
16400
16500 C FOLLOWING IS FOR STRINGS OF VALUES.
16600 62 KL=NCNT(J,L)+1
16700 IF(KL.GT.VIJ2)KL=1
16800 IF(NL.NE.-46.AND.NL.NE.-36)GO TO 162
16900 C THIS PART FOR STRINGS OF RAND SELECTION
17000 LN=KL+IJ+1
17100 KL=KL+1
17200 IF(KL.GT.VIJ2)KL=1
17300 NL=NL+45
17400 C FOR NUMBERS ONLY SO FAR(THIS MAKES NL=-1. FOR NOTES, =9)
17500 162 NCNT(J,L)=KL
17600 IF(NL.GT.-22)GO TO 1462
17700 C JUMP RAND SELECTION
17800 PAR=V(IJ+KL+1)
17900 C********** MAY 13,71 RHY REPEAT FEATURE OMITTED.
18000 C************************
18100 CC DEC.6,72 IF(NL.EQ.-45)DF=PAR
18200 IF(KN.NE.3)GO TO 1155
18300 C*******JULY 16,71 IF(PAR.EQ.101.)GO TO 5174
18400 IF(PAR.EQ.10000.)GO TO 5174
18500 PM=2.
18600 IF(PAR.GT.100..OR.PAR.LT.1.)PM=3.
18700 IF(PAR.EQ.85.)MK=-1
18800 GO TO 5155
18900 65 W=-9900.-V(IJ-3)
19000 C W=BG TIME OF MOVE.
19100 X=ABS(V(IJ-1))
19200 IF(NL.EQ.-56.OR.NL.EQ.-58)PM=2.
19300 Z=(BT-W)/VIJ2
19400 C Z= % OF WAY THROUGH.
19500 IF(Z.GT.1.)Z=1.
19600 Y=V(LN)
19700 W=V(IJ+3)
19800 IF(X.EQ.7.)W=V(IJ+4)
19900 IF(NL.LT.-58)GO TO 16002
20000 PAR=(W-Y)*Z+Y
20100 IF(X.EQ.7.)GO TO 1600
20200 GO TO 1155
20300 C************** JUNE 1,71
20400 CC16002 PAR=(W-Y+1.)**Z-1.+Y
20500 C FOR "MOVX"
20600 CC IF(W-Y)PAR=(Y-W+1.)**(1.-Z)-1.+W
20700 C******** FEB/73
20800 16002 IF(W.EQ.0)W=W+.01
20900 IF(Y.EQ.0)Y=Y+.01
21000 PAR=Y*((W/Y)**Z)
21100 C THE .01 IS NEEDED FOR MOVE TO OR FROM 0.
21200 IF(X.NE.7.)GO TO 1155
21300 W=V(IJ+5)
21400 Y=V(IJ+3)
21500 CC X=(W-Y+1.)**Z-1.+Y
21600 CC IF(W-Y)X=(Y-W+1.)**(1.-Z)-1.+W
21700 IF(W.EQ.0)W=.01
21800 IF(Y.EQ.0)Y=.01
21900 X=Y*((W/Y)**Z)
22000 GO TO 16003
22100 C NEXT IS FOR MOVING RAND RANGES.
22200 C1600 PAR=(V(IJ+4)-Y)*Z+Y
22300 1600 W=V(IJ+3)
22400 C*********** BACK TO 65 IS NEW. FEB. 15,71
22500 X=(V(IJ+5)-W)*Z+W
22600 C************ JUNE 1,71
22700 16003 PAR=RAND(PAR,X)
22800 GO TO 1155
22900 67 LN=IJ+3
23000 NM=LN+VIJ2-1
23100 ML=1
23200 GO TO 1900
23300 4155 K=(PAR-9999.0)*100.+.1
23400 P(L)=P(K)
23500 PM=PL(K)
23600 GO TO 21551
23700 C ANY # OVER 9999. REPEATS ANOTHER PARAM.(9999.21 REPEATS P21)
23800 6157 LN=V(LN-1)
23900 DO 1068 K=1,KL
24000 1068 IF(K.LT.KL)LN=LN+V(LN)+1
24100 2068 PM=LN+1
24200 PAR=LN+V(LN)
24300 GO TO 5155
24400 68 KL=NCNT(J,L)
24500 IF(KL.EQ.0.OR.KL.EQ.10000)KL=VIJ2
24600 PM=KL+1
24700 PAR=PM+V(KL)-1
24800 KL=PAR+1
24900 IF(V(KL).EQ.10000.)DUR(J)=BT
25000 C 'END' OR 'FINE' IN 'LIT' LIST.
25100 IF(V(KL).EQ.999.)KL=IJ+2
25200 NCNT(J,L)=KL
25300 GO TO 5155
25400 C ******* JAN 20 *************
25500 1155 IF(PAR.EQ.10000.)GO TO 5174
25600 C TYPE 'END' AS LAST IN ANY STRING TO SET DURATION.
25700 IF((PAR.GT.9999.).AND.(PM.EQ.1.))GO TO 4155
25800 C****JULY 16,71 1155 IF((PAR.GT.9999.).AND.(PM.EQ.1.))GO TO 4155
25900 5155 P(L)=PAR
26000 21551 PL(L)=PM
26100 IF(ISUB)GO TO 601
26200 IF(L.EQ.2)GO TO 4203
26300 21552 IF(IDF.GE.0)GO TO 2155
26400 DF=PAR
26500 IDF=0
26600 2155 CONTINUE
26700
26800 9203 IF(KB.EQ.0)GO TO 1170
26900 NL=KB
27000 DO 2203 K=1,KB
27100 X=OTH(NL,1)
27200 IF(X.LT.100000.)GO TO 2203
27300 L=X/100000.
27400 Y=(X-L*100000.)/100.
27500 IX=Y
27600 JC=NL
27700 IF(J.EQ.L.AND.IX.EQ.ICT)GO TO 5203
27800 2203 NL=NL-1
27900 GO TO 1170
28000 4203 PR=P2
28100 IF(T5.EQ.0)GO TO 7203
28200 IF(IT3.LE.1.OR.BT.LT.TBG+TDUR)GO TO 6203
28300 3155 IT3=IT3+3
28400 TBG=TBG+TDUR
28500 TDUR=V(IT3)
28600 IF(BT.GE.TBG+TDUR)GO TO 3155
28700 T1=V(IT3+1)
28800 T2=V(IT3+2)
28900 X=2.*TDUR/(T1+T2)
29000 AC=2.*(TDUR-T1*X)/X**2
29100 6203 RA=PR
29200 IF(BT.EQ.TBG)XT(J)=T1
29300 K=IT3
29400 RC=0
29500 RD=1
29600 KA=1
29700 RB=0
29800 Z=TDUR+TBG-BT
29900 X=T1
30000 Y=T2
30100 YY=AC
30200 CHN=TBG
30300 ZZ=TDUR
30400 GO TO 4020
30500 8203 P2=RA*RD
30600 7203 P2=P2*T4
30700 X=P2*TF
30800 C P2 IS KEPT WITHOUT TF*
30900 K=X+.5
31000 IF(X)K=X-.5
31100 72031 ROFF(J)=ROFF(J)+K-X
31200 IF(ABS(ROFF(J)).LT.1.)GO TO 7155
31300 Y=1.
31400 IF(ROFF(J))Y=-1.
31500 K=K-Y
31600 ROFF(J)=ROFF(J)-Y
31700 C ROUND-OFF GAP WILL NOT EXCEED .001
31800 C*********** FEB 17,71
31900 7155 PP2=K/1000.
32000 C AVOIDS ROUND-OFF PROBLEMS
32100 IF(IPT(J,31).EQ.0)GO TO 6155
32200 IF(ICT)GO TO 1170
32300 X=V(IPT(J,31)+2)/2.
32400 Y=RAND(-X,X)
32500 IF(PP2.GE.0)GO TO 615
32600 MK=-1
32700 PP2=-PP2
32800 615 PP2=PP2-RDEV(J)+Y
32900 RDEV(J)=Y
33000 C TOTAL RAND DEV. WON'T EXCEED P31
33100 C SET P31 TO .0001 TO BRING VOICE BACK TO EXACT TIME(0 WON'T DO IT)
33200
33300 K=PP2*1000.+.5
33400 C****** CHECK THIS OUT 1/10/72 :::::::
33500 61551 PP2=K/1000.
33600 C NEVER MORE THAN .1( DEVIATION WITH RAN TF. (RTF=.05)
33700 6155 IF(ICT)GO TO 9203
33800 GO TO 2155
33900 5203 JD=Y*100-IX*100+.5
34000 IF(JD.GT.0)GO TO 3203
34100 M=0
34200 P1(J)=PP1+PP2
34300 GO TO 7021
34400 3203 P(JD)=OTH(JC,2)
34500 X=OTH(JC,3)
34600 IF(X.NE.1.)X=3.
34700 C 'EDITS' PRINT,NUM. OR 5 CHARS.
34800 PL(JD)=X
34900 C NEXT ADDED NOV.72 CHECK FOR SIDE AFFECTS !!!!! **********
35000 IF(JD.EQ.2)PP2=P2
35100 C 'TF' AND 'TEMPO' WILL NOT AFFECT PP2 'EDITS'.
35200 1170 IF(MK.OR.PP2)GO TO 2022
35300
35400 ZPAR=PP1
35500 P1(J)=PP1+PP2
35600 C ZPAR IS USED HERE WHEN OP1(OMIT) IS .GT.0. OMIT IS IN REAL TIME.
35700 LK=INST(J)
35800 2021 IF(PP1.LT.OP1)GO TO 2612
35900 IF(INVIS(J).LT.0)GO TO 2170
36000 C ALL PARAMS WILL PRINT,1ST TIME WHEN USING 'OMIT'.
36100 IF(INONLY.GT.0)GO TO 1204
36200 C*********** MAY 16,71 ↑↑↑
36300 6021 IF(P(NPA).NE.COPY(NPA).OR.PL(NPA).GT.1)GO TO 5021
36400 C******* MAY 25,71
36500 C 'LIT' DATA WILL ALWAYS PRINT.
36600 NPA=NPA-1
36700 IF(NPA.GT.2)GO TO 6021
36800 5021 DO 1304 K=3,NPA
36900 1304 COPY(K)=P(K)
37000 1204 IF(PL4.NE.1.)GO TO 2170
37100 P4=P4*AMPFAC
37200 L=0
37300 INP(J)=P4
37400 DO 1021 K=1,NINS
37500 1021 IF(P1(K).GT.PP1)L=L+INP(K)
37600 IF(L-IAMP-1)GO TO 2170
37700 IAMP=L
37800 AMPTIM=PP1
37900 2170 IF(MX.EQ.3)GO TO 2612
38000 C ********* MAY 17,71
38100 PP1=PP1-OP1
38200 C PUTS SPACES BETWEEN NOTES .GT. .05( APART
38300 IF((MZ.NE.-1).OR.(A.GE.PP1))GO TO 5170
38400 IF(INONLY)WRITE(JOUT,902)
38500 A=PP1+.05
38600 5170 ML=10
38700 IF(NPA.LT.10)ML=NPA
38800 MLX=3
38900 NL=2
39000 IF(INVIS(J).EQ.0)GO TO 3170
39100 CC5170 IF(INVIS(J).EQ.0)GO TO 3170
39200 CC MLX=3
39300 LK=0
39400 C NEEDED TO INIT INVISIBLE MODE PRINT-OUT (NO INST NAME, P1, P2)
39500 C NEXT CREATES FORMAT DATA IN IFM ARRAY.
39600 31701 KL=3
39700 GO TO 4170
39800 3170 IF(.NOT.INONLY.AND.J.NE.INONLY)GO TO 2612
39900 VX(1)=PP1
40000 VX2=PP2*DF
40100 IFM3='F9.3,'
40200 IFM4=IFM3
40300 KL=5
40400 CC ML=10
40500 CC IF(NPA.LT.10)ML=NPA
40600 CC MLX=3
40700 CC NL=2
40800 IF(NPA.LT.3)GO TO 2121
40900
41000 4170 NL=2
41100 DO 1121 K=MLX,ML
41200 X=P(K)
41300 L=PL(K)
41400 IF(L-2)321,521,621
41500 321 IF(X.GE.0)GO TO 4211
41600 IFM(KL)=IFCOM
41700 NL=NL+1
41800 KL=KL+1
41900 4211 IFM(KL)='F9.3,'
42000 C CREATES 'F9.3'
42100 421 VX(KL-NL)=X
42200 GO TO 1121
42300 521 IFM(KL)=IFM2
42400 C CREATES '1XA5'
42500 LN=X
42600 VX(KL-NL)=SCAL(LN)
42700 GO TO 42
42800 621 IF(L.GT.3)GO TO 721
42900 VX(KL-NL)=X
43000 C ABOVE LETS A5 WD BE USED IN SUBR BY SETTING PL(N)=3.
43100 42 IFM(KL)=IFM2
43200 GO TO 1121
43300 721 LN=X
43400 IFM(KL)=I1X
43500 NL=NL+1
43600 DO 821 M=1,LN-L+1
43700 KL=KL+1
43800 IOUT(KL-NL)=IV(L-1+M)
43900 821 IFM(KL)=IA1
44000 1121 KL=KL+1
44100
44200 C NO MORE THAN 80 ITEMS IN FORMAT.
44300 2121 IF(KL.LE.80)GO TO 21211
44400 21212 FORMAT(' ERROR! TOO MANY LIT. ITEMS')
44500 TYPE 21212
44600 21211 DO 921 M=KL+1,80
44700 921 IFM(M)=IBLA
44800 IFM(KL)=')'
44900 L=KL-NL-1
45000 IF(MX)WRITE(1,IFM)LK,(VX(K),K=1,L)
45100 IF(.NOT.MZ)GO TO 30210
45200 IF(ML.GE.NPA)IFM(KL)='$)'
45300 WRITE(JOUT,IFM),LK,(VX(K),K=1,L)
45400 30210 IF(ML.GE.NPA)GO TO 3021
45500 MLX=ML+1
45600 ML=ML+10
45700 IF(ML.GT.NPA)ML=NPA
45800 LK=IBLA
45900 GO TO 31701
46000 3021 IF(MX)WRITE(1,3616)INST(J),ICT
46100 30211 IF(MZ)WRITE(JOUT,8902),J,INST(J),ICT,BT
46200 2612 PP1=ZPAR
46300 GO TO 21
46400 8902 FORMAT('+;<'I2,1XA5,I4,' >',F7.3)
46500 3616 FORMAT(';PRINT(P1);< ',A5,I4)
46600 C PRINTS RESTS
46700 2022 PP2=ABS(PP2)
46800 C IN THIS VERSION TYPE 'R' FOR RESTS IN ANY PARAM BUT P2.
46900 C FOR RESTS IN SEQS. TYPE -DUR.
47000 C WHEN RANDOM RESTS ARE CHOSEN, SEQS. MISS NOTES.
47100 C RAN RESTS ARE NOT TOUCHED BY SUBROUTINES!!!
47200 INP(J)=0
47300 P1(J)=PP1+PP2
47400 C STORES NEXT P1 TIME FOR THIS INST.
47500 IF((MZ.NE.-1).OR.(PP1.LT.OP1))GO TO 21
47600 X=PP1-OP1
47700 IF(A.GE.X)GO TO 121
47800 WRITE(JOUT,902)
47900 A=X+.05
48000 121 IF(INONLY.OR.J.EQ.INONLY)WRITE(JOUT,1110),INST(J),X,PP2,
48100 1 J,INST(J),ICT
48200 21 PR=ABS(PR)
48300 BG(J)=BT+PR
48400 IF(ICT.EQ.DUR(J)-10000.)GO TO 5174
48500 IF(BG(J).LT.DUR(J))GO TO 500
48600 5174 BG(J)=19999.
48700 DO 3174 K=1,NINS
48800 C INSERTS CANT FOLLOW LAST REGULAR NOTE.
48900 C (ADD REST IF INSERT AT END IS NEEDED.)
49000 3174 IF(BG(K).LT.19999.)GO TO 500
49100 GO TO 175
49200 C CHOOSES INST WITH NEXT BEGIN TIME.
49300 500 J=1
49400 BW=BT
49500 NL=NINS+KB
49600 DO 22 K=2,NL
49700 22 IF(BG(J).GT.BG(K))J=K
49800 IF(J.GT.NINS.OR.NINS.EQ.1)GO TO 3022
49900 J=1
50000 DO 5022 K=2,NINS
50100 X=P1(J)
50200 Y=P1(K)+.0001
50300 C LOWEST NUMBERED INST WILL COME 1ST IF BG TIMES ARE VERY CLOSE
50400 IF(BG(J).EQ.19999.)X=19999.
50500 IF(BG(K).EQ.19999.)Y=19999.
50600 5022 IF(X.GT.Y)J=K
50700 C ABOVE IS FOR ROUND-OFF PROBLEMS WITH 'TEMPO' AND 'CONDUCT'.
50800 3022 BT=BG(J)
50900 IF((BT.EQ.19999.).OR.(P1(J).GE.DURX))GO TO 175
51000 IF(CNT(J).GT.0)GO TO 1022
51100 IF(CNT(J).EQ.0)P1(J)=0
51200 IF(CNT(J).EQ.-1)CNT(J)=0
51300 C N.B. 'TF' CONTROLS BG TIME WHEN BG .GT. 0
51400 1022 IF((BT.LT.T6).OR.(IT3.GT.1))GO TO 1108
51500 T4=T2
51600 T5=0
51700 T6=10000.
51800 GO TO 1108
51900 1175 FORMAT('+',A5,'=',F7.3,2X,$)
52000 1109 FORMAT(' FINISH; < ',A5,'.DAT')
52100 1110 FORMAT(' <',A5,2F9.3,2X,'******* REST <'I2,1XA5,I4)
52200 1603 FORMAT(' AMPL. FACTOR=',F4.2,', MAX.AMP.=',I4,', AT TIME',
52300 1 F8.3)
52400 175 IF(MZ)WRITE(JOUT,1109),ISLAC
52500 CC IF(MX.GE.0)GO TO 603
52600 IF(MX.GE.0)GO TO 4175
52700 WRITE(1,1109),ISLAC
52800 END FILE 1
52900 603 FORMAT(' TOTAL DURS: ',$)
53000 CC IF(MZ)GO TO 4175
53100 CC TYPE 1603,AMPFAC,IAMP,AMPTIM
53200 CC TYPE 603
53300 CC GO TO 5175
53400 4175 WRITE(JOUT,1603),AMPFAC,IAMP,AMPTIM
53500 WRITE(JOUT,603)
53600 5175 DO 2175 K=1,NINS
53700 X=P1(K)-OP1
53800 IF(MZ)GO TO 6175
53900 TYPE 1175,INST(K),X
54000 GO TO 2175
54100 6175 WRITE(JOUT,1175),INST(K),X
54200 2175 CONTINUE
54300 IF(JOUT.NE.22)GO TO 3175
54400 END FILE 22
54500 CALL PRINT
54600 REWIND 22
54700 K='FOR22'
54800 CALL OFILE(22,K)
54900 C LEAVES FOR22.DAT WITH 0K
55000 END FILE 22
55100 3175 TYPE 1023,ISLAC
55200 END